The present embodiments relate generally to electronic circuits and more particularly to techniques for routing traces on printed circuit boards to different layers using shared poly vias.
Printed circuit boards (PCBs) can be fabricated using various techniques, with the two most common being either build-up or laminate. With laminate PCBs, when traces need to be routed to different layers using vias, a drill hole through the entire stack of layers of the PCB is required, even when the trace only needs to be routed to an adjacent or a few layers, which can cause waste. New manufacturing technologies allow shared multi-net usage of a single drill hole. The problem is to provide an interactive routing environment that allows designers to effectively share partially used drill sites, all inside a typical etch-edit environment.
The present embodiments are directed generally to techniques for providing an interactive environment that gives visual feedback and indicators to identify and/or encourage effective sharing of partially used drill sites, all inside a typical etch-edit environment. Such an interactive environment allows designers to effectively leverage and exploit new PCB manufacturing techniques that allow for multi-net use of a single drill hole.
These and other aspects and features of the present embodiments will become apparent to those ordinarily skilled in the art upon review of the following description of specific embodiments in conjunction with the accompanying figures, wherein:
The present embodiments will now be described in detail with reference to the drawings, which are provided as illustrative examples of the embodiments so as to enable those skilled in the art to practice the embodiments and alternatives apparent to those skilled in the art. Notably, the figures and examples below are not meant to limit the scope of the present embodiments to a single embodiment, but other embodiments are possible by way of interchange of some or all of the described or illustrated elements. Moreover, where certain elements of the present embodiments can be partially or fully implemented using known components, only those portions of such known components that are necessary for an understanding of the present embodiments will be described, and detailed descriptions of other portions of such known components will be omitted so as not to obscure the present embodiments. Embodiments described as being implemented in software should not be limited thereto, but can include embodiments implemented in hardware, or combinations of software and hardware, and vice-versa, as will be apparent to those skilled in the art, unless otherwise specified herein. In the present specification, an embodiment showing a singular component should not be considered limiting; rather, the present disclosure is intended to encompass other embodiments including a plurality of the same component, and vice-versa, unless explicitly stated otherwise herein. Moreover, applicants do not intend for any term in the specification or claims to be ascribed an uncommon or special meaning unless explicitly set forth as such. Further, the present embodiments encompass present and future known equivalents to the known components referred to herein by way of illustration.
According to certain general aspects, the present embodiments are directed to techniques for providing an interactive environment that gives visual feedback and indicators to identify and/or encourage effective sharing of partially used drill sites, all inside a typical etch-edit environment. Such an interactive environment allows designers to effectively leverage and exploit new PCB manufacturing techniques that allow for multi-net use of a single drill hole. It should be noted, however, that although the present embodiments will be described in connection with layouts of circuits and nets in circuit structures comprising PCBs, the principles of the present embodiments may be extended to other editing environments for other circuit structures that may benefit from similar manufacturing techniques.
The present applicants have observed that, according to conventional techniques, identifying via-sharing candidates can either be done post-process, or during routing. If done as a post-process, the existing routing may be too dense or too time-consuming to modify for effective via-merging. If done during the routing process, the process requires stopping the routing flow, and doing a very manual user inspection, querying via-by-via, greatly inflating the cycle time for the physical layout process.
An aspect of the present embodiments, therefore, is to provide a dynamic feedback environment that provides a series of visual indicators for drill hole sharing for vias based on the current selected network and layer(s). Such an environment can also provide cursor-snap features to guide the interactive edits so as to quickly and properly align routing/vias onto the existing drill holes. An advantage of this methodology is that it allows for efficient reuse of drill hole locations without increasing the design cycle time. This reduces overall design area and provides a cost benefit for most products leveraging this technology, while removing the cost burden of increased design effort.
As shown in
For example, as shown in
In this example, a person editing the layout wants to route the trace 202 currently on layer 1 (e.g., the top layer) of a multi-layer PCB to another (e.g., lower layer) layer by selecting trace 202 by pointing and clicking or hovering cursor 222 on or over the display of trace 202, for example. For ease of explanation of certain aspects of the present embodiments, the display also contains six nearby vias 204-1 to 204-6 that are accessible in layer 1. Commonly, as shown, vias are drawn as two circles 210, with the inner circle showing the drill hole, and the outer circle showing the conductive pad for the via.
As further shown, each of the vias 204-1 to 204-6 has one or more associated traces already connected to them, with traces 206 in the same layer as trace 202 being shown in the same color as the color of trace 202, and traces 208 in different layers from trace 202 being shown in different colors (it should be apparent that there can therefore be several different layers and colors than the two layers and colors shown in this example). However, other than these color indications, even with PCB designs incorporating new technologies enabling shared vias, no other information about the vias is shown, such as whether the via uses a drill hole that is a candidate for use as a shared poly via. Instead, the user is required to use other means, such as a via-by-via query, to identify which nearby via sites 204 are candidate locations for use as shared poly vias.
In this example, as shown in
A triangle
A star triangle
A triangle with an “X” overlay 336 indicates an existing via 304-4 that qualifies as a shared poly via due to layer-range criteria, but does not qualify due to hole-size mismatch. This encourages the user to modify the selected via hole-size if possible, so that reuse with the existing via can be done. Users are not encouraged to route dynamic traces or vias so as to connect to vias having triangles with an “X” surrounding them unless they can modify the hole size of the indicated via.
It should be noted that the display of poly via figures such as
In these examples, displays and indicators will be described in connection with routing and/or layout editing where a dynamic trace is at the cursor (e.g., trace 402 at white cursor 422 via point and click or hover). However, similar displays and indicators can be provided when a dynamic via is at the cursor (e.g., for moving or editing an existing via). As in the example of
Assume that, in this example, a user is editing a layout in layer 1 (e.g., a top PCB layer) and that the PCB includes six total layers. Further assume that, in this example, via 404-1 uses a conventional drill hole through all six layers, while vias 404-2 to 404-6 use drill holes that are formed using new manufacturing technologies and thus include an isolation cut or spacer between the top and bottom three layers.
Still further, in this example, assume the following conditions exist: (1) the drill hole of existing via 404-1 is currently being used by trace(s) 406 in the same net as trace 402; (2) the upper half (e.g., layers 1-3) of the drill hole of existing via 404-2 is currently being used by trace(s) 406 in a different net as trace 402, while the lower half (e.g., layers 4-6) of the drill hole is available; (3) the lower half of the drill hole of existing via 404-3 is currently used by trace(s) 408 in a different net as trace 402, while the upper half of the drill hole is available; (4) the upper half of the drill hole used by existing via 404-4 is currently being used by trace(s) 406 in a different net as trace 402, while the lower half of the drill hole used by existing via 404-4 is currently being used by trace(s) 408 in another different net as trace 402; (5) the upper half of the drill hole used by existing large via 404-5 is currently being used by trace(s) 406 in a different et as trace 402, while the lower half of the drill hole is available; and (6) the lower half of the drill hole used by existing large via 404-6 is currently being used by trace(s) 408 in a different net as trace 402, while the upper half of the drill hole is available.
Accordingly, in this example, when a user editing dynamic trace 402 part of net “A” on layer 1 (e.g., a top PCB layer) wants to route trace 402 to a pin in another layer in the upper half of the PCB (e.g., layers 2 or 3), the candidates for use as shared poly vias to merge into at the next pick are vias 404-1 (because it is currently being used by net “A”), 404-3 (because the upper half of the drill hole is available), and 404-6 (because the upper half of the drill hole is available), and are shown with extra figures drawn 432, 434 and 436, respectively. The user is therefore, at least initially, encouraged to pick one of these vias. Meanwhile, vias 404-2, 404-4, and 404-5 are not candidates, since the upper halves of the drill holes they use are currently in use by different nets. So no extra figures are shown and the user is thereby not encouraged to pick one of these vias.
With no via at the cursor 422, which is the case shown in
Although not applicable to the case where only a dynamic trace with no via is selected by the cursor 422, the example shape 436 shown in
As set forth above, displays and indicators similar to the above examples can be provided when a dynamic via is at the cursor (e.g., for moving or editing an existing via) rather than a dynamic trace. It should be noted that, however, differently from existing techniques, the movement of the dynamic via can be allowed to overlap or come near to an existing via that is a candidate for use as a shared poly via. This has an advantage of easily allowing multiple vias to be merged into a single via, which can save PCB real estate.
Moreover, when dynamically editing traces or vias, in addition to providing the graphical indicators for candidate shared poly vias described above, the user interface can include a cursor-snap feature for guiding and causing the interactive edits to quickly and properly align routing/vias onto the existing drill holes.
As shown in this example, in addition to other conventional initialization activities for editing a PCB layout (e.g., loading the current PBC layout including set of traces, pins and vias, their locations in the layout, the different nets, etc.) another initial step S502 according to embodiments includes identifying the drill hole manufacturing rules for the current PCB design. This includes what types of vias or drill holes are available for use as multi-net drill holes using new manufacturing technologies, as well as which layers of the PCB in the drill holes can be separated from other layers (e.g., a single drill hole can be used by one net in layers 1-3, and another net in layers 4-6). These rules can be provided along with other manufacturing rules for a given PCB manufacturer, for example.
During editing of the PCB layout (e.g., after a particular editing state or set of functionality of a layout editor or tool has been selected), a dynamic trace or via is identified in step S504. This can occur, for example, when a user has selected a particular layer to edit, a particular zoom level, and has clicked on or hovered over a particular trace or via in the layer been viewed and/or has otherwise selected for editing.
Once the trace or via is identified, information about it is obtained, such as the net to which the trace or via belongs, current layer information, etc. Other information can include, for dynamic traces, another layer to which the user wants the trace to transition to (e.g., via a popup or dialog box). Moreover, in step S506, similar information about all the other traces and vias currently within the view of the display along with the dynamic trace or via is obtained (e.g., layers, nets and traces currently being used by the other vias, etc.). Based on that information, additional graphical indicators for other vias that are candidates for use as shared poly vias are overlayed on the displayed vias in the view, such as the example indicators shown in
In this example, further processing relevant to the present embodiments occurs whenever an existing via is selected for use by the dynamic trace or via (as determined in step S510), or when the view has changed as determined in step S514 (e.g., the zoom level has changed, the window over the layout has been moved and/or the user no longer wants to edit the currently selected trace or via).
If it is determined in step S510 that an existing via is selected for use by the dynamic trace or via, the design of the layout and displays of graphical indicators are updated accordingly in step S512. Processing then returns to step S504 for identification of another trace or via in the current or another layer of the design.
If it is determined in step S514 that the the view has changed (e.g., the zoom level has changed, the window over the layout has been moved), processing returns to step S506 where all of the vias in the new view of the layout are identified as shown in this example. If it is otherwise determined in step S514 that the user is no longer interested in editing the currently selected trace or via, processing may instead return to step S504.
It should be noted that the flowchart of
As shown, the system 600 includes an routing tool 602 including a PCB layout editor 604 and user interface module 606 that have been adapted with the shared poly via routing functionality of the present invention. It should be noted that the principles of the present embodiments are not limited to PCB routing tools, and those skilled in the art will understand how to extend these principles to other types of EDA tools after being taught by the present examples.
In these and other embodiments, routing tool 602 may include additional interactive or automated modules for interactively implementing designs for PCBs that are not shown such as floorplanners, design rule checkers, a verification engine, signal and power integrity checkers, etc. as will be appreciated by those skilled in the art. In other embodiments, routing tool 602 is a standalone application that only includes routing and/or layout editor functionality and/or is adapted to communicate with other automated EDA modules.
In embodiments, system 600 can be implemented by one or more general purpose computers that are loaded with an operating system executing software and/or customized to include hardware for interactively implementing physical electronic designs and adapted with the poly via functionality of the present disclosure. In some embodiments, the one or more computing systems comprise and/or communicate with various components not shown such as the processor(s) or processor core(s), memory, disks, etc. The one or more computing systems may further write to and read from a local or remote volatile or non-volatile computer accessible storage not shown that stores thereon data or information such as, but not limited to, one or more databases 612 such as physical design database(s), libraries, data, rule decks, constraints, etc. and/or other information or data that may be required to support the methodology of the present embodiments. In some embodiments, the one or more computing systems are implemented in a “cloud” configuration and/or a client/server configuration. For example, one or more server computers may be loaded with application software (e.g., a layout editor tool) for implementing some or all of the methodology of the present embodiments, and one or more client computers can communicate with the server computer(s) via a network to perform some or all of the methodology of the embodiments for a particular design.
In operation, a user can interact with layout editor tool 604 via user interface module 606 to operate on dynamic traces or vias as described above. In addition, when layout editor 604 is being used to create or modify a portion of a PCB design stored in layouts 612, using the methodology described above, for example, in response to user actions conducted using interface devices 610 (e.g., mouse, trackball, touchpad, touchscreen, etc.) and user interface 606, layout editor 604 accesses drill hole configurations or rules 616 in database 612 and creates graphical indicators for shared poly via candidates and displays them to the user via user interface devices 610 (e.g., display monitor) and user interface 606. Layout editor 604 can further include conventional functionality for receiving and updating PCB design and/or layout information (e.g., SI data) for the current design in layouts 612 in response to the user actions.
Although the present embodiments have been particularly described with reference to preferred ones thereof, it should be readily apparent to those of ordinary skill in the art that changes and modifications in the form and details may be made without departing from the spirit and scope of the present disclosure. It is intended that the appended claims encompass such changes and modifications.
Number | Name | Date | Kind |
---|---|---|---|
7100135 | Meyer et al. | Aug 2006 | B2 |
20010038612 | Vaughn | Nov 2001 | A1 |
20060253819 | Meyer et al. | Nov 2006 | A1 |
20100205575 | Arora | Aug 2010 | A1 |
20110131543 | Majumder | Jun 2011 | A1 |