1. Field of the Invention
The invention relates in general to a computer-implemented method for design rule checking (DRC) for integrated circuits (ICs) and, in particular, to a method for incremental design rule checking (DRC) for integrated circuits (ICs).
2. Description of the Prior Art
Design rule checking (DRC) is a vital step in integrated circuit (IC) design. When turning over an IC design to manufacturing, all design rules required by the manufacturing facility have to be checked and passed. Foundries such as TSMC, UMC and etc publish a set of design rules for each of their process lines. IC designers need to check their designs against these rules before they can hand over to the foundry to start manufacturing.
Traditionally, DRC runs are batch oriented. Designers prepare a command script, commonly known as “rule deck”, and submit it along with their design to a DRC program. The DRC program then interprets the command script, checks the design accordingly, and reports any design rule violations it may detect. Designers then read the design rule violation report and decide how to fix design rule violations. After the design rule violations are fixed, designers rerun the DRC program on the revised design. The process repeats until no design rule violations are reported. The condition is then called “DRC free”, and the design is ready to “tape-out” for manufacturing. DRC in this case is used as a “signed-off” means between the design team and the manufacturing facilities.
As IC designs get more and more complicated, design rule violations toward the end of the design cycle become more and more difficult to fix. It will be ideal if the design is DRC free along the course of the design cycle. That is, the design is “correct by construction”. Automation design tools, such as placement and route tools, will try to deliver correct by construction for the results they generate. In the past, design rules tended to be less complicated, and placement and routing tools could achieve DRC free by taking into account all the design rules in their placement and routing algorithms. However, modern process nodes (e.g. 40 nm and beyond) requires advanced rules that are hard, if not impossible, to be fully taken care of in placement and routing algorithms. To achieve correct by construction, software tools will try to take care of design rules in algorithms as much as possible. In addition, they need an embedded DRC engine to help detect if there are any design rule violations that they might generate. If the embedded DRC engine reports design rule violations, software tools will then try to revise the results to avoid the design rule violations.
The same idea of correct by construction can be applied to manual editing of IC layouts. During manual editing, designers may want to ensure that they are not causing new design rule violations. To achieve this goal, layout editors will need embedded DRC engines to help check DRC violations, and possibly guide the user during manual editing.
What the embedded DRC engine does is usually called “incremental” design rule checking. In prior art, it's not uncommon that incremental DRC and sign-off DRC share the same piece of software program: only the rule set and the size of the geometry shapes differ. For incremental DRC, the rule set may be a subset of the entire set of design rules, and the geometry shapes may come from a portion of the design. Other than those two, the checking and report mechanisms are the same.
There are several drawbacks using the sing-off DRC approach for incremental DRC. Firstly, the “newly created” design rule violations are mixed with “old” design rule violations in the DRC report. Take the placement and routing tools as an example. If the partial design that the tool passes to the DRC engine does not contain any design rule violations, everything will be fine. On the other hand, if the partial design contains both new design rule violations, which are caused by the tool's latest actions, and old design rule violations, which have been sitting there before the tool applies the latest actions, it will be confusing to the user. Often, the user has to run incremental DRC twice: first on the partial design before the actions, and second on the partial design after the actions. Design rule violations common to these two runs are then filtered out. Although this can yield the newly created design rule violations, it's time consuming and error prone.
The second drawback is about efficiency. Sometimes a tool that makes use of incremental DRC wants to make sure that no new design rule violations are introduced by its actions. That is, as soon as the first design rule violation is detected, the tool would like to stop the DRC engine right away, and the tool will rollback what it has done to the design and try something else. The sign-off DRC approach, since it is batch oriented, will find and collect all the design rule violations before it starts to report. When the tool stops the DRC engine on the first design rule violation report, much of the work for DRC checking has been done already. It's a waste of precious runtime.
Therefore, what is needed is a DRC method that can isolate the new DRC violations from the old DRC violations, and can perform DRC in a correct-by-construction manner to deliver overall DRC results efficiently.
One object of the present invention is to perform context-sensitive incremental design rule checking (DRC) for an integrated circuit (IC). The design rule violation checking is executed between a set of environment shapes and a set of active shapes but not among the set of environment shapes and the set of active shapes. Furthermore, the checking can comprise multiple transactions. For each transaction, if no design rule violations are found, the set of active shapes is added into the set of environment shapes.
One embodiment in the present invention is to incorporate the context-sensitive incremental DRC engine with placement tools. With the assistance of the context-sensitive incremental DRC engine, placements can be generated with design rule checking to resolve violations during the placement.
In another embodiment of the present invention, the context-sensitive incremental DRC engine can provide users with guidance for DRC-free editing in an interactive editing layout tool.
Another embodiment in the present invention is to incorporate the context-sensitive incremental DRC engine with net routing tools. With the assistance of the context-sensitive incremental DRC engine, nets can be routed along with efficient design rule checking to resolve violations during the routing process.
Other objects, technical contents, features and advantages of the present invention will become apparent from the following description taken in conjunction with the accompanying drawings wherein are set forth, by way of illustration and example, certain embodiments of the present invention.
The foregoing aspects and many of the accompanying advantages of this invention will become more readily appreciated as the same becomes better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein:
The detailed explanation of the present invention is described as following. The described preferred embodiments are presented for purposes of illustrations and description, and they are not intended to limit the scope of the present invention.
During initialization, design rules to be checked are passed to the DRC engine (step 11). Then, a set of environment shapes are passed to the engine (step 12). Typically, the set of environment shapes are existing geometry shapes in the IC. After the set of environment shapes are added to the engine, a transaction is started. Then, a set of active shapes are passed to the DRC engine (step 13). Typically, the set of active shapes are geometry shapes which are to be added to the IC. After the set of active shapes are added to the DRC engine, design rule checking can be started (step 14). Since the main target is to find design rule violations between the set of environment shapes and the set of active shapes, the checking will only be performed on potential design rule violations between the set of environment shapes and the set of active shapes. In other words, it is not necessary to check potential design rule violations within the set of environment shapes or within the set of active shapes.
If design rule violations are found during checking (step 15), the corresponding parameters will be recorded (step 17) for error reporting, and the transaction is terminated without a commit. Otherwise, the set of active shapes will be added into the set of environment shapes, and the transaction is terminated and committed (step 16). If more sets of active shapes are to be processed (step 18), the next transaction will be started; otherwise, the design rule checking will be stopped (step 19).
In one embodiment, the incremental DRC can be applied to an IC which is almost DRC free but still needs some checking for small portions of geometries. As an example shown in
According to the flow illustrated in
Next, the third set of shapes 23 is passed to the engine. Therefore, a second transaction is started for design rule checking between the third set of shapes 23 and current set of environment shapes, which is either the updated set of environment shapes (21 and 22) or the original set of environment shapes (21) depending on the previous checking result. If no design rule violations are found, the third set of shapes 23 can be added to the current set of environment as an updated set of environment shapes. Otherwise, the parameters associated with each of the design rule violations will be recorded. Consequently, the incremental design rule checking process for the IC is completed.
The disclosed DRC engine is suitable for embedding in various electronic design automation (EDA) tools. The rest of the descriptions will cover how such an incremental DRC engine can be embedded in and utilized by various tools, such as placement tools, routing tools, or interactive layout editing tools.
In one embodiment, the DRC engine is incorporated with a placement tool. Given an IC comprising a plurality of cell instances, a placement tool is to assign the location and orientation to each of the cell instances in the IC subject to a set of design rules.
Thus design rule checking can be performed between the set of environment shapes and the set of active shapes but not within the set of environment shapes or within the set of active shapes according the design rules (step 34). If no design rule violations are found (step 35), the set of active shapes will be added into the set of environment shapes (step 36). If design rule violations are found (step 35), detailed results will be generated, which comprise the involved cell instances and corresponding geometric parameters for resolving design rule violations. According to the results, the set of active shapes can be re-placed (step 37) and the design rule checking will be re-done, until the design rule violations are resolved.
After the set of active shapes are added into the set of environment shapes, a new set of active shapes can be defined and processed until all the cell instances are successfully converted to the set of environment shapes (step 38 and 39).
In one embodiment, callback functions are used for passing design rule violations generated in step 35. During initialization, a plurality of callback functions are registered for corresponding potential design rule violations. Thus, in step 35, once design rule violations are found, a corresponding callback function will be called for each of the design rule violations to pass the associated information and parameters to trigger the action for resolving the design rule violation.
Next, shapes in the master cells corresponding to those instances which are next to those cell instances on the far left are retrieved and transformed accordingly. The transformed shapes are then passed to the DRC engine as a set of active shapes.
In
After all the design rule violations are resolved, the placement tool commits the current transaction with the DRC engine, that is, adding the set of active shapes into the initial set of environment shapes to form an update set of environment shapes 44, as shown in
As illustrated in
After that, the placement tool changes the direction, say, to the vertical direction. Again, in one embodiment, the placement tool starts with cell instances from one end, say, from the bottom. As depicted in
Next, it retrieves all the shapes in the cell instances 45 adjacent to the instances at the bottom, transforms them, and passes the transformed results to the DRC engine as a set of active shapes. Then, incremental DRC is performed. For each violation callback, the placement tool inserts a clearance constraint 43 accordingly.
After all the design rule violations are resolved, the placement tool commits the current transaction, which adds the set of active shapes into the initial set of environment shapes. Then, the placement tool moves on to the next level of cell instances, and repeats the process. It does this until all levels of cell instances are processed.
At this point both the horizontal and vertical design rule violations have been resolved appropriately. The updated placement result should be clear of all the design rule violations which were reported by the incremental DRC engine.
In another embodiment, the DRC engine is incorporated with an interactive layout editing tool. As illustrated in
As illustrated in
For efficiency reasons, if the layout editor detects a new position (or new dimension) for the active shape (for example, the user has moved the mouse before the first checking is completed), the layout editor will rollback the transaction as soon as possible due to the fact that the new position (or new dimension) for the active shape will invalidate the current checking. Therefore, it should be cancelled as soon as possible, and a new checking should then be prepared and performed.
When the user has finished the rule-driven editing command (for example, the user has released the mouse button), the final position (or dimension) for the active shape is checked against environment shapes. Any design rule violation reported by the increment DRC engine will then be indicated by an error mark 54 on the layout accordingly, as illustrated in
In another embodiment, the DRC engine is incorporated with a net routing tool. Given an IC comprising a plurality of cell instances, a plurality of conductive wires and a netlist, a net routing tool is to create conductive connections among the cell instances in the IC according to the netlist and subject to a set of design rules.
Thus design rule checking can be performed between the set of environment shapes and the set of active shapes but not within the set of environment shapes or within the set of active shapes according the design rules (step 64). If design rule violations are found (step 65), the set of active shapes is discarded, and based on the error report from the design rule checking, the router's internal data structure and constraints are updated in accordance with the involved cell instances, conductive wires and corresponding geometric parameters for resolving design rule violations. Accordingly, a new set of active shapes is re-generated (step 67) and the design rule checking will be re-done (step 64), until the design rule violations are resolved.
If design rule violations are not found, the set of active shapes are added into the set of environment set (step 66).
After invoking the DRC engine to start checking, the routing tool may receive violation callbacks. Assume that it receives two violation callbacks: one concerning “dense line end” violation and the other concerning “fat spacing violation”, as shown in
From the callback data, the router can derive two clearance boxes (751 and 752) which can be added to the router's internal data structure as blockages. The router will then remove conductive path 71 and redo the net routing taking into consideration the two newly added blockages.
After the re-route, the router can generate a new conductive path 74 as show in
Please refer to
Refer to
Refer to
In summary, the invention provides a context-sensitive way for design rule checking. Consequently, an IC layout can be generated with an efficient process for design rule checking for resolving design rule violations by embedding the context-sensitive incremental DRC engine into various EDA tools.
The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustrations and description. They are not intended to be exclusive or to limit the invention to the precise forms disclosed, and obviously many modifications and variations are possible in light of the above teaching. The embodiments were chosen and described in order to best explain the principles of the invention and its practical application, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as are suited to particular use contemplated. It is intended that the scope of the invention be defined by the Claims appended hereto and their equivalents.
This application claims the benefit of priority of U.S. Provisional Application No. 61/430,184, filed Jan. 6, 2011, and titled “Context-Sensitive, Trans-Reflexive, Incremental DRC Checker and its Applications”, the contents of which are herein incorporated by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
61430184 | Jan 2011 | US |