A spacing violation checker that forms conductor rectangles, forms minimum spacing rectangles, identifies possible errors and checks whether possible errors are true errors allows same net spacing errors to be recognized during physical design prior to the design rules check. The software supporting the invention performs orders of magnitude faster than the design rules check solution. As such, the invention dramatically decreases the turn-around time of physical design, providing a fast solution which is available prior to final layout release.
|
6. A process of testing spacing of elements in a structure comprising:
forming a plurality of element rectangles representative of elements of said structure; forming minimum spacing rectangles around said plurality of element rectangles, said minimum spacing rectangles being larger than respective ones of said plurality of element rectangles; identifying a possible error rectangle when a first element rectangle of said plurality of element rectangles occupies a portion of a minimum spacing rectangle of a second element rectangle of said plurality of element rectangles; checking whether said possible error rectangle is a true error; and reporting said true errors.
1. A process of testing spacing of wiring in a circuit comprising:
forming a plurality of conductor rectangles representative of conductors of said circuit; forming minimum spacing rectangles around said plurality of conductor rectangles, said minimum spacing rectangles being larger than respective ones of said plurality of conductor rectangles; identifying a possible error rectangle when a first conductor rectangle of said plurality of conductor rectangles occupies a portion of a minimum spacing rectangle of a second conductor rectangle of said plurality of conductor rectangles; checking whether said possible error rectangle is a true error; and reporting said true errors.
11. A computer system for testing spacing of wiring in a circuit comprising:
a unit for forming a plurality of conductor rectangles representative of conductors of said circuit; a unit for forming minimum spacing rectangles around said plurality of conductor rectangles, said minimum spacing rectangles being larger than respective ones of said plurality of conductor rectangles; a unit for identifying a possible error rectangle when a first conductor rectangle of said plurality of conductor rectangles occupies a portion of a minimum spacing rectangle of a second conductor rectangle of said plurality of conductor rectangles; a unit for checking whether said possible error rectangle is a true error; and a unit for reporting said true errors.
21. A process of testing spacing of wiring in a circuit comprising:
forming a plurality of conductor rectangles representative of conductors of said circuit; forming minimum spacing rectangles around said plurality of conductor rectangles, said minimum spacing rectangles being larger than respective ones of said plurality of conductor rectangles; identifying a possible error rectangle when a first conductor rectangle of said plurality of conductor rectangles occupies a portion of a minimum spacing rectangle of a second conductor rectangle of said plurality of conductor rectangles; checking whether said possible error rectangle is a true error; reporting true errors; and classifying said possible error rectangle as one of non-diagonal and diagonal.
22. A process of testing spacing of wires in a circuit comprising:
forming a plurality of conductor rectangles representative of conductors of said circuit; forming minimum spacing rectangles around said plurality of conductor rectangles, said minimum spacing rectangles being larger than respective ones of said plurality of conductor rectangles; identifying a possible error rectangle when a first conductor rectangle of said plurality of conductor rectangles occupies a portion of a minimum spacing rectangle of a second conductor rectangle of said plurality of conductor rectangles; checking whether said possible error rectangle is a true error; and reporting true errors, wherein said checking process comprises determining if said possible error rectangle is covered by metal.
23. A process of testing spacing of wiring in a circuit comprising:
forming a plurality of conductor rectangles representative of conductors of said circuit; forming minimum spacing rectangles around said plurality of conductor rectangles, said minimum spacing rectangles being larger than respective ones of said plurality of conductor rectangles; identifying a possible error rectangle when a first conductor rectangle of said plurality of conductor rectangles occupies a portion of a minimum spacing rectangle of a second conductor rectangle of said plurality of conductor rectangles; checking whether said possible error rectangle is a true error and reporting true errors wherein said checking process determines that said possible error rectangle is not a true error if said possible error rectangle is entirely covered by metal.
16. A computer program product comprising a program storage device readable by a computer system tangibly embodying a program of instructions executed by said computer system to perform a process for testing spacing of wiring in a circuit, said process comprising:
forming a plurality of conductor rectangles representative of conductors of said circuit; forming minimum spacing rectangles around said plurality of conductor rectangles, said minimum spacing rectangles being larger than respective ones of said plurality of conductor rectangles; identifying a possible error rectangle when a first conductor rectangle of said plurality of conductor rectangles occupies a portion of a minimum spacing rectangle of a second conductor rectangle of said plurality of conductor rectangles; checking whether said possible error rectangle is a true error; and reporting said true errors.
24. A process of testing spacing of wiring in a circuit comprising;
forming a plurality of conductor rectangles representative of conductors of said circuit; forming minimum spacing rectangles around said plurality of conductor rectangles, said minimum spacing rectangles being larger than respective ones of said plurality of conductor rectangles; identifying a possible error rectangle when a first conductor rectangle of said plurality of conductor rectangles occupies a portion of a minimum spacing rectangle of a second conductor rectangle of said plurality of conductor rectangles; checking whether said possible error rectangle is a true error; and reporting said true errors, wherein said possible error rectangle has adjacent sides, and said checking process determines that said possible error rectangle is not a true error if at least two adjacent sides of said possible error rectangle are covered by metal.
2. The process in
4. The process in
5. The process in
7. The process in
9. The process in
10. The process in
12. The computer system in
14. The computer system in
15. The computer system in
17. The computer program product in
19. The computer program product in
20. The computer program product in
|
This application is a continuation of U.S. application Ser. No. 09/162,215 filed Sep. 28, 1998 now U.S. Pat. No. 6,301,689.
1. Field of the Invention
The present invention generally relates to methods and systems for checking spacing of wiring in a semiconductor structure and more particularly to a method and system for checking the spacing of wiring within a single net.
2. Description of the Related Art
Conventional design rules require wires of the same net within a semiconductor structure to be spaced a specified minimum distance apart. A net can be defined as a set of logically connected shapes (typically terminals on logic gates) which are electrically connected when modeled physically. Older designs satisfied the minimum spacing requirements fairly easily through simplified grid designs which automatically guaranteed that minimum spacing design rules were met. However, with advancing technologies wider wires are more prevalent. Such wide wires have larger spacing requirements than the older narrower wires. Therefore, a simple gridded solution is no longer effective with today's current wide wires.
Minimum spacing violations were conventionally recognized during the shapes processing performed by Design Rules Check (DRC). Design Rules Check is an expensive and time consuming process which is usually run after the final physical design layout is complete. Further, correcting minimum spacing violations after the final physical design layout is complete is also a difficult and expensive process. Therefore, there is a conventional need for a system and method for checking a given net for spacing violations which is fast, inexpensive and can be performed before the final physical design layout is complete.
It is, therefore, an object of the present invention to provide a structure and method for testing spacing of wiring in a circuit comprising forming a plurality of conductor rectangles representative of conductors of the circuit, forming minimum spacing rectangles around the conductor rectangles (the minimum spacing rectangles being larger than respective ones of the conductor rectangles), identifying a possible error rectangle when a first conductor rectangle of the conductor rectangles occupies a portion of a minimum spacing rectangle of a second conductor rectangle of the conductor rectangles, checking whether the possible error rectangle is a true error, and reporting the true errors.
The checking process comprises classifying the possible error rectangle as a possible diagonal error rectangle or a possible non-diagonal error rectangle, determining that the possible diagonal error rectangle is not a true error when at least two adjacent sides of the possible diagonal error rectangle which connect the first conductor and the second conductor are covered by a third conductor of the conductors, and determining that the possible non-diagonal error rectangle is not a true error when the possible non-diagonal error rectangle is completely covered by the third conductor.
The process of forming minimum spacing rectangles comprises forming the minimum spacing rectangles to have sides which are a minimum spacing design constraint distance from sides of respective ones of the conductor rectangles.
The conductors are preferably within a single net. If the circuit comprises a plurality of nets the process further includes checking for shorts between different ones of the nets.
The invention can also include dividing the possible error rectangle into at least two possible error rectangle if the possible error rectangle is partially covered by a third conductor of the conductors.
The invention is superior to conventional systems because the invention allows same net spacing errors to be recognized during physical design prior to Design Rules Check. The software supporting the invention performs orders of magnitude faster than the Design Rules Check solution. As such, the invention dramatically decreases the turn-around time of physical design, providing a fast solution which is available prior to final layout release.
The foregoing and other objects, aspects and advantages will be better understood from the following detailed description of preferred embodiments of the invention with reference to the drawings, in which:
Referring now to the drawings, and more particularly to
A first stage of the invention involves a plane sweep of all the net's components (e.g., net parts) such as vias, wires segments, pins or powers. The first rectangle M1 represents the shape of the net part and the second rectangle S1 represents the minimum spacing requirement surrounding the net part M1. The size of the second minimum spacing rectangle S1 is determined by the design rules for net part M1 such as the minimum space "d", as mentioned above. While the minimum spacing rectangles S1 are illustrated as true rectangles for clarity, the minimum spacing measure from the corners of the net part M1 is actually a radius, making the minimum spacing rectangles S1 take on a somewhat oval shape in real world applications.
Once all possible error rectangles have been determined and a list of possible spacing errors created, the invention seeks to eliminate possible error rectangles from the possible error list. The invention classifies each spacing error as non-diagonal or diagonal. A possible diagonal spacing error P1 is illustrated in
The invention determines whether a non-diagonal possible spacing error constitutes an actual spacing error by examining if the possible error rectangle is covered by other metal. If the non-diagonal possible spacing rectangle is entirely covered by another conductor (e.g., other metal), no error exists, and the invention removes the possible spacing error rectangle from the possible error list.
For example, as illustrated in
The process for determining whether a non-diagonal possible spacing errors is an actual error is discussed above. For diagonal possible spacing errors different techniques are utilize and are discussed below with respect to
More specifically,
Continuing with the same example,
The remaining possible error rectangles violate the minimum spacing constraints of the design rules, are considered true violations and are reported as errors.
In another embodiment of the invention, to increase the speed of the invention, the analysis can be limited to metal shapes within the same net. A second system and computer programs, which are well known to those ordinarily skilled in the art, which checks for shorts between different nets, would determine whether the minimum spacing violations existed between different nets. Therefore, if such a second computer program is utilized, the present invention can be limited to a single net. By limiting the invention to a single net, the invention works much faster because the complexity and number of the rectangles analyzed is reduced.
While the overall methodology of the invention is described above, the invention can be embodied in any number of different types of systems and executed in any number of different ways, as would be known by one ordinarily skilled in the art. For example, as illustrated in
A flowchart of the foregoing embodiment of the invention is shown in FIG. 12. More specifically, in block 10 the metal and space rectangles are formed for all metal shapes within the net, as discussed above. In block 20 the rectangles are compared using a plane sweep algorithm to determine which metal and space rectangles are intersecting. From this information, block 30 creates the initial list of possible spacing errors.
Block 40 begins a loop through the list of possible spacing errors. If there are any unexamined possible spacing errors, the flow continues to block 60 where the next possible spacing error is located. In block 70 the possible spacing error is classified as either diagonal or non-diagonal.
In block 80 diagonal errors are tested to determine if two adjacent edges of the possible spacing error rectangle which connect the metal shapes comprising the error are entirely covered by other metal shapes of the net. If so, in block 90 the possible spacing error is removed from the error list. The flow loops back through 1 to block 40.
In block 100 non-diagonal errors are tested to determine if the possible spacing error rectangle is entirely covered by metal shapes of the net. If so, in block 90 the possible spacing error is removed from the error list. If not, the possible spacing error rectangle is tested to determine if it is partially covered by other metal shapes of the net. If so, the possible spacing error is replaced by one or more new possible spacing errors representing the area of the original possible spacing error rectangle which is not covered by metal shapes of the net. The flow loops back through 1 to block 40.
Once all possible spacing errors have been examined, the invention reports the remaining possible spacing errors to the user in block 50 and the flowchart ends.
Similarly, the invention could preferably be embodied in any number of software programs. For example, one computer program, or portion of a computer program, could determine whether a potential spacing error exists and whether the possible spacing error is diagonal or non-diagonal. An example of the pseudo-code for such a software program follows.
activeList = empty | |
netPartList = empty | |
possibleErrorList = empty | |
diagonalPossibleErrorList = empty | |
For each net part | |
add space rectangle keyed by it's low x | |
coordinate to netPartList | |
add space rectangle keyed by it's high x | |
coordinate to netPartList | |
endFor | |
Sort netPartList | |
// Iterate through netPartList | |
while (sortedNetPart = getNext (netPartList)) | |
if (sortedNetPart key is low x) | |
For every activeListNetPart in activeList | |
*See NOTE | |
Compare (sortedNetPart, activeListNetPart) | |
endFor | |
add sortedNetPart to activeList | |
else | |
delete sortedNetPart from activeList | |
endWhile | |
Compare (netPart1, netPart2) | |
if netPart1 and netPart2 metal rectangles do not | |
intersect | |
if netPart1 space rectangle intersects | |
netPart2 metal rectangle | |
OR | |
netPart2 space rectangle intersects netPart1 | |
metal rectangle | |
Compute distance between metal shapes | |
if distance < spacing requirement | |
Add intersection of the two space | |
rectangles to either | |
possibleErrorList or | |
diagonalPossibleErrorList | |
endIf | |
endIf | |
endIf | |
endCompare | |
Additionally, a computer program, or a portion of a computer program, could evaluate a possible non-diagonal spacing error to determine whether a possible non-diagonal error is actually a true error to be reported to the user.
More specifically, such a computer program or portion of a computer program could determine if a possible spacing error rectangle is covered by other metal in the design. The invention could remove a spacing error from the list of possible errors upon determining the possible spacing error rectangle is entirely covered by metal. Upon determining the possible spacing error rectangle is partially covered by metal, the invention could calculate new possible spacing error rectangles by subtracting the covered area from the initial possible spacing error rectangle and could replace the original possible spacing error with the newly created possible spacing errors. An example of the pseudo-code for such a software program follows.
// Iterate through net parts, stopping if | |
// possibleErrorList is empty | |
For each netPart and possibleErrorList is not empty | |
// Iterate through possibleErrorList | |
while (possibleError = getNext (possibleErrorList)) | |
If possibleError was not created from this | |
netPart | |
Intersect the netPart metal rectangle | |
with the possibleError rectangle | |
If the intersection rectangle is more | |
than a line | |
Subtract the intersection rectangle | |
area from the possibleError | |
rectangle, possibly | |
creating/deleting | |
possibleErrorList elements | |
endIf | |
endIf | |
endWhile | |
endFor | |
// Any remaining possibleErrorList elements are errors | |
while (possibleError = getNext (possibleErrorList)) | |
Report possibleError rectangle as an error | |
endWhile | |
Additionally, a computer program, or a portion of a computer program, could evaluate a possible diagonal error to determine whether a possible diagonal error is actually a true error to be reported to the user.
More specifically, such a computer program or a portion of a computer program could evaluate whether additional metals exists which collectively intersect the edges of the diagonal possible spacing error rectangle and whether those edge intersections indicate a metal connection between the original metal rectangles comprising the possible spacing error.
The invention could compare the diagonal possible spacing error rectangle edges to the metal rectangles of all other net parts. As metal rectangles are found which intersect the edges, the invention could split, shorten or remove the edges of the possible error rectangle at the area of the intersection of the possible error rectangle and the metal rectangle. The invention could then evaluate the remaining edges to determine if two adjacent edges connecting the original metal shapes comprising the diagonal possible spacing error have been removed by this process and, if so, could remove the possible spacing error from the list of possible spacing errors. This situation is similar to that shown in FIG. 9.
However, if the edges of the possible diagonal error rectangle which have been removed do not connect the original metal shapes comprising the error, the possible spacing error would be considered a true spacing violation. This is similar to the situation shown in FIG. 10. An example of the pseudo-code for such a software program follows.
// Iterate through diagPossibleErrorList | |
while (possibleError = getNext (diagPossibleErrorList) | |
if possibleError rectangle is a line | |
create one edge | |
// Iterate though net parts, stopping if | |
// edge is null | |
For each netPart and edge != NULL | |
process_this_edge (netPart, edge) | |
endfor | |
if (edge == NULL) // Edge totally removed | |
remove possibleError from | |
diagPossibleErrorList | |
endif | |
else // possibleError is a rectangle | |
create four edges (east, west, north, south) | |
still_error = true | |
// Iterate through net parts stopping if | |
// no longer an error | |
For each netPart and still_error | |
process_this_edge (netPart, edge_east) | |
process_this_edge (netPart, edge_west) | |
process_this_edge (netpart, edge_north) | |
process_this_edge (netPart, edge_south) | |
endfor | |
// Have the appropriate edges been removed? | |
if ((metal shapes are at the NE and SW | |
corners of possibleError rectangle) AND | |
((edge_east == NULL) && | |
(edge_south == NULL)) OR | |
((edge_west == NULL) && | |
(edge_north == NULL))) | |
still_error = false | |
endif | |
if ((metal shapes are at the NW and SE | |
corners of possibleError rectangle) AND | |
((edge_west == NULL) && | |
(edge_south == NULL)) OR | |
((edge_east == NULL) && | |
(edge_north == NULL))) | |
still_error = false | |
endif | |
if ( ! still_error ) | |
remove possibleError from | |
diagPossibleErrorList | |
endif | |
endif | |
endwhile | |
// Any remaining diagPossibleErrorList elements are | |
// errors | |
while (possibleError = getNext (diagPossibleErrorList)) | |
Report possible Error rectangle as an error | |
endWhile | |
process_this_edge (netPart, edge_list) | |
// Iterate through partial edges associated with | |
// this edge | |
while (partial_edge = getNext (edge_list)) | |
if netPart metal rectangle intersects | |
partial_edge | |
if intersection is entire partial edge | |
remove partial_edge from edge_list | |
else | |
modify partial edge to reflect | |
remaining edge after intersection | |
possibly splitting into two | |
partial edges | |
endIf | |
endIf | |
endWhile | |
endProcess_this_edge | |
Therefore, the invention is superior to conventional systems because the invention allows same net spacing errors to be recognized during physical design prior to Design Rules Check. The software supporting the invention performs orders of magnitude faster than the Design Rules Check solution. As such, the invention dramatically decreases the turn-around time of physical design, providing a fast solution which is available prior to final layout release.
The invention is general in nature and can be applied to any application which can represent the application data as a set of connected rectangles and a set of spacing constraints. For example, any application which architects nets, such as mazes for mice or other objects to pass through, might wish to ensure the spacing in the structure would meet a minimum requirement so that the mice or other objects do not get stuck.
While the invention has been described in terms of preferred embodiments, those skilled in the art will recognize that the invention can be practiced with modification within the spirit and scope of the appended claims.
Patent | Priority | Assignee | Title |
7263682, | Jun 18 2004 | HONG FU JIN PRECISION INDUSTRY SHENZHEN CO , LTD ; HON HAI PRECISION INDUSTRY CO , LTD | System and method for calculating trace lengths of a PCB layout |
7353472, | Aug 12 2005 | Meta Platforms, Inc | System and method for testing pattern sensitive algorithms for semiconductor design |
7478348, | Mar 27 2006 | International Business Machines Corporation | Method and apparatus of rapid determination of problematic areas in VLSI layout by oriented sliver sampling |
7685544, | Aug 12 2005 | Meta Platforms, Inc | Testing pattern sensitive algorithms for semiconductor design |
8020135, | May 20 2005 | Cadence Design Systems, Inc. | Manufacturing aware design and design aware manufacturing of an integrated circuit |
8201132, | Nov 29 2007 | International Business Machines Corporation | System and method for testing pattern sensitive algorithms for semiconductor design |
8302061, | May 20 2005 | Cadence Design Systems, Inc. | Aware manufacturing of an integrated circuit |
8713484, | May 20 2005 | Cadence Design Systems, Inc. | Aware manufacturing of integrated circuits |
Patent | Priority | Assignee | Title |
5062054, | Mar 10 1988 | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | Layout pattern generation and geometric processing system for LSI circuits |
5247455, | May 30 1990 | SHARP KABUSHIKI KAISHA, | Method of verifying wiring layout |
5625568, | Dec 22 1993 | VLSI Technology, Inc. | Method and apparatus for compacting integrated circuits with standard cell architectures |
5689433, | Nov 19 1992 | VLSI Technology, Inc. | Method and apparatus for compacting integrated circuits with wire length minimization |
5946476, | Jun 14 1994 | SOCIONEXT INC | Method and apparatus for designing the layout of circuit component patterns |
6275971, | Sep 30 1997 | NXP B V | Methods and apparatus for design rule checking |
6301689, | Sep 28 1998 | GLOBALFOUNDRIES Inc | Spacing violation checker |
6374395, | Apr 24 2000 | Taiwan Semiconductor Manufacturing Company | Methodology for generating a design rule check notch-error free core cell library layout |
6470489, | Sep 17 1997 | SYNOPSYS MERGER HOLDINGS LLC | Design rule checking system and method |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Apr 18 2001 | International Business Machines Corporation | (assignment on the face of the patent) | / | |||
Jun 29 2015 | International Business Machines Corporation | GLOBALFOUNDRIES U S 2 LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 036550 | /0001 | |
Sep 10 2015 | GLOBALFOUNDRIES U S 2 LLC | GLOBALFOUNDRIES Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 036779 | /0001 | |
Sep 10 2015 | GLOBALFOUNDRIES U S INC | GLOBALFOUNDRIES Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 036779 | /0001 | |
Nov 27 2018 | GLOBALFOUNDRIES Inc | WILMINGTON TRUST, NATIONAL ASSOCIATION | SECURITY AGREEMENT | 049490 | /0001 | |
Nov 17 2020 | WILMINGTON TRUST, NATIONAL ASSOCIATION | GLOBALFOUNDRIES U S INC | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 056987 | /0001 | |
Nov 17 2020 | WILMINGTON TRUST, NATIONAL ASSOCIATION | GLOBALFOUNDRIES Inc | RELEASE BY SECURED PARTY SEE DOCUMENT FOR DETAILS | 054636 | /0001 |
Date | Maintenance Fee Events |
Jul 30 2004 | ASPN: Payor Number Assigned. |
Sep 19 2007 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Apr 02 2012 | REM: Maintenance Fee Reminder Mailed. |
Aug 16 2012 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Aug 16 2012 | M1555: 7.5 yr surcharge - late pmt w/in 6 mo, Large Entity. |
Feb 16 2016 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Aug 17 2007 | 4 years fee payment window open |
Feb 17 2008 | 6 months grace period start (w surcharge) |
Aug 17 2008 | patent expiry (for year 4) |
Aug 17 2010 | 2 years to revive unintentionally abandoned end. (for year 4) |
Aug 17 2011 | 8 years fee payment window open |
Feb 17 2012 | 6 months grace period start (w surcharge) |
Aug 17 2012 | patent expiry (for year 8) |
Aug 17 2014 | 2 years to revive unintentionally abandoned end. (for year 8) |
Aug 17 2015 | 12 years fee payment window open |
Feb 17 2016 | 6 months grace period start (w surcharge) |
Aug 17 2016 | patent expiry (for year 12) |
Aug 17 2018 | 2 years to revive unintentionally abandoned end. (for year 12) |