WO2005122027A2 - Local preferred direction routing and layout generation - Google Patents

Local preferred direction routing and layout generation Download PDF

Info

Publication number
WO2005122027A2
WO2005122027A2 PCT/US2005/019359 US2005019359W WO2005122027A2 WO 2005122027 A2 WO2005122027 A2 WO 2005122027A2 US 2005019359 W US2005019359 W US 2005019359W WO 2005122027 A2 WO2005122027 A2 WO 2005122027A2
Authority
WO
WIPO (PCT)
Prior art keywords
routing
wiring
region
regions
layer
Prior art date
Application number
PCT/US2005/019359
Other languages
French (fr)
Other versions
WO2005122027A3 (en
Inventor
Asmus Hetzel
Anish Malhotra
Deepak Cherukuri
Etienne Jacques
Jon Frankle
Original Assignee
Cadence Design Systems, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US11/005,169 external-priority patent/US7412682B2/en
Priority claimed from US11/005,162 external-priority patent/US7707537B2/en
Priority claimed from US11/005,448 external-priority patent/US7340711B2/en
Application filed by Cadence Design Systems, Inc. filed Critical Cadence Design Systems, Inc.
Priority to EP05755944A priority Critical patent/EP1756741A4/en
Publication of WO2005122027A2 publication Critical patent/WO2005122027A2/en
Publication of WO2005122027A3 publication Critical patent/WO2005122027A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing

Definitions

  • An integrated circuit is a semiconductor device that includes many electronic components (e.g., transistors, resistors, diodes, etc.). These components are often interconnected to form multiple circuit components (e.g., gates, cells, memory units, arithmetic units, controllers, decoders, etc.) on the IC.
  • An IC also includes multiple layers of metal and/or polysilicon wiring that interconnect its electronic and circuit components. For instance, many ICs are currently fabricated with five metal layers. In theory, the wiring on the metal layers can be all-angle wiring (i.e., the wiring can be in any arbitrary direction). Such all-angle wiring is commonly referred to as Euclidean wiring.
  • each metal layer typically has one global preferred wiring direction, and the preferred direction alternates between successive metal layers.
  • Many ICs use the Manhattan wiring model that specifies alternating layers of horizontal and vertical preferred direction wiring. In this wiring model, the majority of the wires can only make 90° turns. Occasional diagonal jogs are sometimes allowed on the preferred horizontal and vertical layers. Standard routing algorithms heavily penalize these diagonal jogs (i.e. assess proportionally high routing-costs), however, because they violate the design rules of the Manhattan wiring model. Some have recently proposed ICs that use a diagonal wiring model to provide design rules that do not penalize diagonal interconnect lines (wiring).
  • Interconnect lines are considered “diagonal” if they form an angle other than zero or ninety degrees with respect to the layout boundary of the IC.
  • diagonal wiring consists of wires deposed at ⁇ 45 degrees.
  • Typical Manhattan and diagonal wiring models specify one preferred direction for each wiring layer. Design difficulties arise when routing along a layer's preferred direction because of obstacles on these wiring layers. For example, design layouts often contain circuit components, pre-designed circuit blocks, and other obstacles to routing on a layer. Such obstacles may cause regions on a layer to become essentially unusable for routing along the layer's single preferred direction. An example that shows obstacles that cause regions on a design layout to become unusable for routing is illustrated in Figure 1. This figure shows two wiring layers that each have two routing obstacles 115 and 120.
  • One of the layers has a horizontal preferred direction; the other layer has a diagonal preferred direction.
  • the obstacles 115 and 120 cause two regions 105 and 110 to become unusable for routing on both of these layers. Therefore, both the Manhattan and diagonal wiring models typically waste routing resources on the layers of a design layout. Accordingly, there is a need in the art for a wiring model that allows Manhattan and diagonal wiring and recaptures the routing resources lost because of obstacles on a wiring layer. More generally, there is a need for a route planning method that maximizes the routing resources on each particular layer.
  • Some embodiments of the invention provide a method for defining routes in a design layout.
  • the method defines at least one particular wiring layer that has at least two regions with different local preferred wiring directions.
  • the method then uses the differing local preferred wiring directions to define a detailed route on the wiring layer.
  • the method defines a routing graph for specifying routes.
  • the routing graph has at least two graph regions corresponding to two layout regions on the particular layer of the design layout. The two graph regions overlap to account for the transition in the direction of the wiring between the two graph regions.
  • the method then uses the two graph regions to define routes.
  • the method defines a routing graph that has first and second routing planes for the particular layer.
  • the first routing plane specifies wiring tracks along the first local preferred wiring direction
  • the second routing plane specifies wiring tracks along the second local preferred wiring direction.
  • the method then uses the two planes to define detailed routes.
  • the method defines a first route that traverse first and second regions between two layers by using a first via that has a first pad in the second region.
  • the method also defines a second route that traverses the second region and a third region in the two layers by using a second via that has a second pad in the second region, where the first and second pads have different shapes.
  • Figure 1 illustraes an example that shows obstacles that cause regions on a design layout to become unusable for routing is illustrated in.
  • Figure 2 illustrates an example of a design layout with several differently shaped local preferred direction (LPD) regions according to some embodiments of the invention.
  • Figure 3 illustrates another example of a wiring layer with several differently shaped LPD regions (LPDRs) according to some embodiments of the invention.
  • LPD local preferred direction
  • Figures 4A and 4B provide examples that illustrate the advantage of LPD wiring model in allowing routing resources normally lost due to obstacles on a wiring layer to be recovered..
  • Figure 5 illustrates an example of such a joining model of some embodiments.
  • Figure 6 illustrates another example of a joining model.
  • Figures 7 and 8 illustrate examples of regions that are between macros or between macros and the layout boundary and that would benefit from LPD wiring.
  • Figure 9 illustrates an auto-LPDR generation process that is used by some embodiments to generate LPDRs in a layout.
  • Figure 10 illustrates an example of a decomposition operation on a layer with a horizontal global preferred direction.
  • Figure 11 illustrates a 45° LPD for an LPDR that is defined between two macro blocks that are diagonally offset from each other.
  • Figure 12 illustrates the elimination of several candidate LPD regions, which were created in the tessellation illustrated in Figure 10.
  • Figure 13 presents an example of an LPDR that is created on a layer between two macros.
  • Figure 14 illustrates an example of a pin adjustment operation that modifies the shape of an LPDR.
  • Figure 15 illustrates an example that shows the use of the corridor created by the adjustment for a via access to the pin.
  • Figure 16 illustrates an example of how some embodiments allow access to the pin through a 45° jog into the modified LPDR, a vertical traversal through this LPDR, and then traversing back in the 45° direction after leaving the LPDR.
  • Figure 17 illustrates another example of the pin adjustment operation.
  • Figures 18-21 illustrate examples of impermeable boundaries between regions on a layer and examples of eliminating such boundaries by reshaping the regions.
  • Figure 22 illustrates an example of a boundary adjustment operation.
  • Figures 23-25 illustrate examples extensions of LPDRs.
  • Figure 26 illustrates a process that the LPDR generator of some embodiments uses to create LPDRs between power via arrays on diagonal wiring layers.
  • Figure 27 illustrates an example of creating LPDRs about power structures.
  • Figure 28 illustrates the merging of the two LPDRs and to define a new LPDR.
  • Figure 29 illustrates an example of an alternative embodiment of the invention.
  • Figures 30-32 illustrate small sections of congestion and length grids.
  • Figures 33-41 illustrate several examples of planar edges within the routing grids.
  • Figure 42 illustrates an example of the planar congestion edges that are used to measure congestion along a layer for the example illustrated in Figure 41.
  • Figure 43 illustrates a process that conceptually represents the overall flow of the router in some embodiments of the invention.
  • Figure 44 illustrates a path search that starts at a node and ends at a node.
  • Figure 45 illustrates several examples of edge regions.
  • Figure 46 illustrates two capacity tiles used in some embodiments of the invention.
  • Figure 47A and 47B illustrate examples of pixelating a capacity tile into numerous tiles with pixels at their centers.
  • Figure 48 presents an example that illustrates how some embodiments define the pixel pitch and the track pitch.
  • Figure 49 presents an example that illustrates that a diagonal movement from a first pixel to a second pixel require not only that the second pixel be free but also requires the two pixels that neighbor both the first and second pixels to be free.
  • Figures 50-56 illustrate examples that illustrate how some embodiments define the capacity of edges for defining routes.
  • Figure 57 illustrates four possible routing grids used by some embodiments of the invention.
  • Figure 58 illustrates an example of three vias.
  • Figures 59A-59D present an example that illustrates how the extension of the tracks in the LPDRs facilitates switching between different tracks in different LPDRs.
  • Figure 60 illustrates an example of using multiple routing grids for the wiring layer of Figure 59A.
  • Figure 61 illustrate how some embodiments combine the multiple grid concept illustrated in Figure 60 with the extension concept illustrated in Figure 59A-59D.
  • Figure 62 illustrates an example of using different via pad shapes between different regions of two wiring layers in a layout.
  • Figure 63 illustrates the overall flow of a router that uses the above-described three techniques.
  • Figure 64 illustrates a process that the routing process of Figure 63 performs to identify and asses a path expansion.
  • Figure 65 conceptually illustrates a computer system with which some embodiment of the invention are implemented.
  • LPD wiring model allows at least one wiring layer to have several different local preferred directions in several different regions of the wiring layer.
  • Section II then describes how some embodiments define regions with different LPDs on the same wiring layer.
  • Section III then describes global routers that use the LPD wiring model, while section IV describes detailed routers that use the LPD wiring model.
  • a diagonal edge typically forms an angle other than 0° or 90° with respect to the layout's Cartesian coordinate axes, which are often parallel with the layout's boundary and/or the boundary of the layout's expected IC.
  • a horizontal or vertical edge typically forms an angle of 0° or 90° with respect to one of the coordinate axes of the layout.
  • the horizontal and vertical directions are referred to as the Manhattan directions.
  • Some embodiments define a "preferred" direction as the direction that a majority of the wires are laid out in a region. Some embodiments further quantify this amount in terms of percentages or amount of the wiring. For example, some embodiments define the preferred direction of a layer as the direction for at least 50% of the wires (also called interconnect lines or route segments) on the layer. Other embodiments define the preferred direction of a layer as the direction for at least 1000 wires on the layer. Some embodiments of the invention use a five-layer wiring model that specifies the following global preferred directions: horizontal wiring on wiring layer 1, vertical wiring on wiring layer 2, horizontal wiring on wiring layer 3, +45° diagonal wiring on wiring layer 4,
  • each wiring layer L (1) at least 4 pitch values for use whenever a global or local preferred direction can be 0°, 45°, 90°, 135°; and (2) a possibly empty set of data tuples that represent regions on the layer that might have a local preferred direction that differs from the global preferred direction D L of the layer.
  • each region's particular tuple t includes an "octangle" O that represents the shape of the particular region, and a direction d that represents the local preferred direction (i.e., 0°, 45°, 90°, 135°) of the particular region.
  • An octangle in some embodiments is a data structure that is useful for design layouts
  • an octangle represents a convex geometric shape in terms of eight values, X LO ,
  • eight values define eight half-planes in two coordinate systems, where one coordinate system is a Manhattan coordinate system that is formed by an x-axis and a y-axis, and the other coordinate system is a 45°-rotated coordinate
  • horizontal lines are aligned with the x-axis
  • vertical lines are aligned with the y-axis
  • 45° diagonal lines are aligned with the s-axis
  • both the wiring and non-wiring geometries of the design layout are convex shapes, or can be decomposed into convex shapes, that have horizontal, vertical, and ⁇ 45° sides.
  • embodiments might use the octangle data structure in cases where the wiring or non-wiring geometries are more restricted.
  • Some embodiments impose several consistency requirements on an LPD description. For instance, some embodiments require each LPD region to be entirely within the chip area. Also, in some embodiments, different LPD regions on a given layer can abut only at their boundary. In addition, in some embodiments, all LPD regions are non-degenerate, i.e. they contain at least one interior point. Careless definition of LPDs can lead to curious consequences like a separated island on a plane that allows almost no wiring to enter or leave.
  • some embodiments of the invention implement an additional plausibility analysis as a separate checking stage that can be called from a Graphical User Interface (GUI) or a text-based interface (such as the Python Interface) in an initial planning stage.
  • GUI Graphical User Interface
  • a macro block is a complex pre-designed circuit block that is used in a layout. Examples of such blocks include IP Blocks, RAM cells, etc.
  • Figure 2 An example of a design layout with several differently shaped LPD regions according to some embodiments of the invention is illustrated in Figure 2. This example shows a wiring layer 200 having a 45° global preferred direction, an octagonal region 205 having a -
  • FIG. 3 illustrates another example of a wiring layer with several differently shaped LPD regions according to some embodiments of the invention.
  • This example shows a wiring layer 300 having a 90° global preferred direction.
  • the layer 300 has four LPD regions having different shapes and different local preferred directions.
  • In the center of the layer 300 is an octagonal LPD region 305 having a -45° local preferred direction. Adjacent to the lower-left
  • region 305 is a rectangular LPD region 310 having a 45° local preferred direction. Adjacent to the upper-left side of region 305 is a hexagonal LPD region 315 having a 60°
  • the LPD wiring model when designing a wiring layer with different shaped LPD regions having different local preferred directions.
  • Figures 2 and 3 present simple cases of the LPD wiring model in a design layout. However, these examples do not illustrate any macros or other obstacles to the wiring on a layer.
  • One of the advantages of the LPD wiring model is that it allows routing resources normally lost due to obstacles on a wiring layer to be recovered.
  • Figures 4A and 4B provide examples that illustrate this advantage.
  • Figure 4A illustrates a wiring layer 400 having a diagonal global preferred direction.
  • This wiring layer includes a column of power via arrays 405, an IP Block 410, a set of memory cells 415, and two pins 420 and 425.
  • Figure 4A also illustrates dotted lines that represent examples of diagonal wiring on the layer.
  • the power stripe 405, IP Block 410, and the set of memory cells 415 are all obstacles to wiring on the wiring layer. For instance, as shown in Figure 4A, a problem arises when pins 420 and 425 need to be connected to each other or to other pins, as the diagonal wiring that connects to pin 420 is obstructed by the power via arrays 405 while the diagonal wiring that connects to pin 425 is obstructed by the IP block 410.
  • Figure 4B illustrates examples of such LPDRs. Specifically, this figure illustrates LPDRs 440 that are defined between the power via arrays and that have a horizontal (0°)
  • some embodiments define just one LPDR (with a horizontal LPD) that covers all the aligned power via arrays. This LPDR will have certain regions (i.e., the regions where the power via arrays exist) blocked for routing. These embodiments define only one LPDR in order to optimize the runtime processing of the LPDRs, as each LPDR takes up memory and computational resources.
  • Figure 4B also illustrates LPD regions 435 that are between the RAM blocks 415 and that have a vertical (90°) LPD.
  • an LPD region 430 having a vertical (90°) local preferred direction is defined between the right side of the IP Block 410 and the right boundary of the wiring layer
  • an LPD region 445 having a horizontal (0°) local preferred direction is defined between the top side of the IP Block 410 and the top boundary of the wiring layer.
  • the boundary between LPDR 430 and LPDR 445 is defined as a 45° diagonal line in order to increase the capacity of the wiring between two such regions. Defining such boundaries and the advantages of such boundaries will be further described below.
  • the LPD regions illustrated in Figure 4B allow wiring that was previously obstructed to now traverse around the obstacles by routing through these LPD regions along their LPDs.
  • pins 420 and 425 can now be connected through a set of interconnect lines that traverse along the global 45° direction, traverse through the LPDR 440 in the horizontal direction, traverse again along the global 45° direction, and then traverse through the LPDR 445 in the horizontal direction.
  • FIG. 5 illustrates an example of such a joining model of some embodiments.
  • horizontal tracks 505 are located in a region with a horizontal local preferred direction
  • vertical tracks 510 are located in a region with a vertical local preferred direction.
  • horizontal and vertical tracks are joined together along a diagonal region 520, which is a diagonal line in this example.
  • Figure 6 illustrates another example of such a joining model. In this figure, +45°
  • each LPDR may have its own set of pitch values.
  • Other embodiments define a different pitch for each possible routing direction of each wiring layer. For instance, some embodiments define at least four (4) pitch values for each wiring layer, with one pitch value for each standard direction (horizontal, vertical, 45°, and 135°).
  • the distance between each track in each LPD region is set according to the pitch value corresponding to the routing direction in that region.
  • the distance between any two parallel tracks is an integer multiple of the pitch, even when the two parallel tracks are in different LPDRs.
  • Offset is the coordinate at the center of a routing track (e.g., it is the x-coordinate for vertical tracks).
  • the offset of the tracks can be defined for each LPD or can remain undefined to be later determined by the detailed router. In either case, the track offsets are defined globally for each wiring direction on a layer. Thus, in some embodiments, there is a common offset for all parallel tracks within all LPD regions within a particular layer. Pitches and offsets may vary from layer to layer.
  • the pitch for a particular region is left undefined, its value is estimated by applications (e.g., global and detailed routers). Some embodiments perform this estimation based on common utility functions that are dependent on minimum size net class and width/spacing of this net class. For example, if just one pitch is defined for a Manhattan direction X, the pitch for the other Manhattan direction Y is automatically estimated with the same value by all applications. The same applies for both diagonal directions. This means that if just the X-pitch is defined, the Y-pitch is defaulted to the same value as X-pitch.
  • the two diagonal pitches are derived from technology design rules, e.g., from the minimum spacing and width of the typical nets.
  • Some embodiments of the invention include an LPDR generator that designates regions on one or more layers as LPD regions.
  • the LPDR generator automatically detects LPDR candidates and designates some of these candidates as LPD regions.
  • the LPDR generator also provides the designer with a graphical user interface that allows the designer to specify LPD regions and to modify the attributes (e.g., boundaries and LPDs) of these regions.
  • the LPDR generator does not perform any automatic detection and designation of LPDRs, but instead only provides the designer with a GUI that allows the designer to specify and modify LPDRs.
  • some embodiments allow a user to define and manipulate LPDRs and LPDs through text-based interfaces, such as a Python Interface.
  • the auto-detection and generation of LPDRs is first described below. This discussion is then followed by a discussion of the GUI of the LPDR generator of some embodiments of the invention.
  • A. Auto LPDR Generator The auto-LPDR generator is intended to make use of LPDRs to increase the routing resources without forcing the user to understand and create LPDRs.
  • LPD creation targets regions the lack routing resources along the global preferred wiring direction of the layer. Such regions typically exist in the alleys between closely placed macros and/or between a macro and the layout's boundary. Also, such regions can be defined between power via arrays used to distribute power in the layout.
  • Sub-section 1 below first describes defining LPDRs based on macros, and then sub-section 2 describes defining LPDRs between power via arrays. It should be noted that some embodiments first define LPDRs between the power via arrays, and then define LPDRs based on macros. Alternatively, some embodiments define these LPDRs together.
  • Macros Figures 7 and 8 illustrate examples of regions that are between macros or between macros and the layout boundary and that would benefit from LPD wiring. Specifically, Figure 7 illustrates two macro blocks 715 and 720 on a layer with a horizontal global preferred direction.
  • the region 705 between the two macros and the region 710 between the macro 715 and the layer boundary provide small amounts of routing space, which are not particularly useful given the horizontal global preferred direction of the wiring on the layer.
  • Figure 8 illustrates a region 805 between a macro 810 and the boundary of a layer with a 45° diagonal wiring. Like the regions 705 and 710 of Figure 7, the regions
  • FIG. 805 provides a small amount of routing space that is not particularly useful given the 45° global preferred direction of the wiring on the layer. Hence, to make use of regions 705, 710, and 805, the preferred wiring directions of these regions should be specified differently from the global preferred wiring direction of their layer.
  • Figure 9 illustrates an auto-LPDR generation process 900 that is used by some embodiments to generate LPDRs in a layout. This process: (1) identifies candidate regions, (2) designates some or all of the candidate regions as LPDRs, (3) adjusts the LPDRs for pin access, and (4) modifies LPDRs to improve routability between LPDRs and between LPDRs and non-LPDR regions on a layer.
  • the process 900 starts by selecting (at 905) a layout layer.
  • the process then decomposes (at 910) the layout layer into several regions.
  • the process decomposes the selected layout layer by projecting rays from the corner vertices of the outline of the macro blocks on the selected layer.
  • the outlines of the macro blocks might have been defined prior to 910 or they might be defined at 910 based on the shape and structure of the content of the macro blocks.
  • the projected rays are in the direction of the global preferred wiring direction of the selected layer.
  • Figure 10 illustrates an example of a decomposition operation on a layer with a horizontal global preferred direction.
  • the layer has six macros 1005. Rays are projected from the vertices of these six macros in the horizontal global preferred direction. These projections define thirteen candidate LPD regions 1010.
  • the process selects (at 915) one of the contiguous regions created through the decomposition. It then determines (at 920) whether it should designate the selected region as an LPDR for a particular local preferred direction. In some embodiment, the process makes this determination by applying a set of geometric criteria.
  • the criteria are meant to ensure that the designation of the selected region as an LPDR does not remove routing resources from a layer, that usable resources are created by the local preferred direction of the LPDR, and that sufficient additional resources get created in order to justify the extra runtime and/or memory cost of including an LPDR.
  • the criteria for defining LPDRs on a layer with a horizontal global preferred direction is:
  • the criteria for defining LPDRs on a layer with a vertical global preferred direction is: • L M BX ⁇ Length of Region > LMin, and • Width of Region ⁇ WM ⁇ ⁇ -
  • the width of the region is in the horizontal direction
  • the length of the region is in the vertical direction
  • L M ⁇ IX and L MUI are upper and lower limits on the length of the region
  • W MUI is a lower limit on the width of the region.
  • the lower limit on region length ensures that the amount of additional horizontal or diagonal resource is worth the cost of LPDRs.
  • the upper limit on region length ensures that significant vertical resources do not get lost.
  • the lower limit on the region's width ensures that the region is not too thin, as horizontal or diagonal tracks that are smaller than some length might not be of any significant use. This way the additional horizontal or diagonal routes will have significant movement along the horizontal or diagonal direction.
  • the process determines (at 920) that the selected region is not a good candidate for an LPDR, the process transitions to 930, which will be described below.
  • the process determines (at 920) that the selected region is a good LPDR candidate, it transitions to 925, where it designates the selected region as an LPDR.
  • the process also designates the LPD of the selected region. For a layer that has a Manhattan global preferred direction, some embodiments define the LPD of a designated LPDR on that layer as the Manhattan direction that is orthogonal to the layer's Manhattan global preferred direction. On a layer that has a diagonal global preferred direction, some embodiments define the LPD of a designated LPDR on that layer as one of the Manhattan directions.
  • This Manhattan direction might be a direction that is identified by the dimensional attributes (e.g., orientation) of the LPDR. For instance, when the LPDR is a tall and narrow rectangle aligned with the y-axis, the LPD direction might be designated as the vertical direction.
  • some embodiments define the LPD of an LPDR on any layer based on the dimensional attributes of the LPDR. Also, some embodiments define the LPD of an LPDR that is defined between two or more macro blocks based on the positional relationship of the macro blocks.
  • Figure 11 illustrates a 45° LPD for an LPDR 1105 that is defined between two macro blocks 1110 and 1115 that are diagonally offset from each other, because it facilitated routing between the open areas 1120 and 1125 to reduce the impact of the macroblocks.
  • Figure 12 illustrates the elimination of several candidate LPD regions, which were created in the tessellation illustrated in Figure 10, for failing to satisfy the above-described width and length criteria. In this example, the remaining LPDRs (i.e., the LPDRs illustrated in this figure) all have been assigned a vertical LPD.
  • the process transitions to 930.
  • the process determines whether it has examined all the contiguous regions created on the selected layer by the decomposition operation at 910.
  • the process selects (at 915) another contiguous region, determines (at 920) whether this region should be designated as an LPDR, and (3) in case of an affirmative determination at 920, designates (at 925) the selected region as an LPDR.
  • the process determines (at 930) that it has examined all the contiguous regions created on the selected layer by the decomposition operation at 910, the process examines (at 935) each particular region that it designated (at 925) as an LPD region to determine whether it needs to adjust or eliminate this region based on pins at the boundaries of the particular region.
  • the newly created LPDRs should not hinder pin access.
  • the process 900 needs to ensure that the LPDRs provide a safe distance for access to the pins.
  • the process initially determines (at 935) whether there is at least one pin on one side of the particular LPDR that needs to connect to another pin on another side of the LPDR. If so, the process discards the LPDR in some embodiments, as the LPDR would block the easiest way to connect the two pins.
  • Figure 13 presents an example of an LPDR 1305 that is created on a layer between two macros 1310 and 1315. On the two sides of the LPDR 1305, the two macros have two pins 1320 and 1325 that need to connect. Hence, as shown in Figure 13, the pin adjustment operation at 935 removes the LPDR 1305 from the layout.
  • the process 900 in some embodiments tries to modify (at 935) the shape of the LPDR (e.g., tries to make the LPDR narrower or shorter as further described below) when it determines that there is one pin on one side of the particular LPDR that needs to connect to another pin on another side of the LPDR. If the modification fails to lead to an acceptable solution, the process then discards the LPDR in some embodiments.
  • the process 900 also identifies (at 935) each LPDR defined at 925 that has one or more pins on its sides even when the pins do not need to connect across the LPDR.
  • the process (1) changes the shape of the LPDR to create one or more open corridors for pin access, and (2) then determines whether the modified LPDR still satisfies the above-mentioned criteria for creating the LPDR. If the modified LPDR no longer satisfies one or more of the criteria (e.g., the modified LPDR's width is smaller than the required minimum width), the process discards the LPDR. Otherwise, the process keeps the LPDR with its modified shape.
  • Figure 14 illustrates an example of a pin adjustment operation that modifies the shape of an LPDR. Specifically, this figure presents an example of an LPDR 1405 that is created on a layer between two macros 1410 and 1415.
  • the macro 1410 On one side of the LPDR 1405, the macro 1410 has a pin 1420 that needs to be connected.
  • the pin adjustment operation at 935 makes the LPDR 1405 narrower (i.e., reduces its width).
  • Modifying the shape of an LPDR provides sufficient routing flexibility for accessing the pins. This leeway can be used by routes to either via out of the layer (the way they would have done without LPDRs) or to jog into the LPDR and blend into the flow.
  • Figure 15 illustrates an example that shows the use of the corridor 1405 created by the adjustment for a via access to the pin.
  • Figure 16 illustrates an example of how some embodiments allow access to the pin through a 45° jog 1610 into the modified LPDR 1405, a vertical traversal through this LPDR, and then
  • jog 1610 is not along a the LPD of the region 1405
  • some embodiments assess this jog a penalty for traversing a portion of this region along its non-preferred direction.
  • the amount that a dimension of the LPDR is adjusted is dependent on the number of pins on the side or sides of the LPDR that are associated with that dimension.
  • Some embodiments might use different rules for performing pin adjustments on layers with diagonal global preferred directions than on layers with Manhattan global preferred directions.
  • Figure 17 illustrates another example of the pin adjustment operation. This example is a continuation of the examples illustrated in Figures 10 and 12.
  • the top layout illustration in Figure 17 presents several pins on the sides of the macros 1005.
  • the bottom left layout illustration in Figure 17 shows the elimination of LPDR 1010. This LPDR was eliminated because two pins 1705 and 1710 on its sides need to be connected to each other.
  • the bottom left layout also illustrates the narrowing of LPDRs 1015 and 1020 to create corridors for accessing pins on the side of these two LPDRs.
  • the bottom right layout in Figure 17 illustrates the elimination of the narrowed LPDR 1015 for failing to satisfy the minimum width criteria for a vertical LPDR.
  • the process performs a boundary adjustment operation at 940.
  • the routability between two regions is dependent on their routing directions and the orientation of the edge separating the two regions. Specifically, when one of the wiring directions between two regions on a layer is parallel to a boundary between the two regions, then some embodiments define the capacity at the boundary between two regions as zero. Such a boundary is referred to as an impermeable boundary between the two wiring directions.
  • Figures 18-20 illustrate examples of impermeable boundaries between regions on a layer and examples of eliminating such boundaries by reshaping the regions.
  • Figure 18 illustrates a layer with a horizontal global preferred wiring direction and a LPDR 1805 between two macros 1810 and 1815.
  • the LPDR 1805 has a vertical LPD.
  • the LPDR 1805 also has horizontal top and bottom sides 1820 and 1825 that are parallel to the horizontal global preferred wiring direction of the layer.
  • some embodiments define the wireflow capacity across the top and bottom sides 1820 and 1825 as zero (i.e., define these sides as impermeable sides).
  • Such a wireflow definition is a conservative definition as a detailed router might allow non-preferred direction jogs at such boundaries.
  • the permeability at the boundary of the LPDR 1805 and the region with the global preferred wiring direction can be improved by modifying the shape of this boundary.
  • Figure 19 illustrates the addition of triangular crown regions 1905 and 1910 to the top and bottom sides of the LPDR 1805.
  • Each triangular crown extension of the LPDR 1805 includes a 45° edge and a vertical edge.
  • the 45° edge is a permeable edge for routes to enter and exist the LPDR, while the vertical edge is an impermeable edge as it is parallel to the vertical LPD of the LPDR 1805.
  • Figure 19 illustrates an example of a route 1920 that traverses through the LPDR 1805 through its permeable edges.
  • Figure 20 illustrates the additions of alternative triangular crown regions 2005 and 2010 to the top and bottom sides of the LPDR 1805.
  • Each of these triangular crown extensions of the LPDR 1805 includes two 45° edges, both of which are in some
  • Figure 21 illustrates two routes 2105 and 2110 that enter the LPDR 1805 through these permeable edges.
  • the route 2105 includes a non-preferred direction jog in the LPDR 1805.
  • the added advantage of the two extra permeable edges that are provided by the crown extensions 2005 and 2010 come at the expense of requiring some routes to have non-preferred direction jogs in the LPDR.
  • LPDR crown extensions provide well-defined bending points for the routes. These well-defined points are only as strict as the layer direction itself.
  • the same kind of jogs that can run orthogonal to a routing direction can also violate the bending points in case the benefit offsets a higher price of a non-preferred- direction jog.
  • Some embodiments use the following approach to modify an impermeable boundary of an LPDR on a Manhattan layer.
  • the impermeable boundary of the LPDR abuts two edges of the LPDR that abut the boundary edges of the layer or of macros on the layer. Each of these two edges is checked to determine whether it can be extended. This involves checking the bounds of the macro's edge next to it.
  • the end-point of the edge is termed extendible if the edge can be elongated at that end-point without extending beyond the macro's edge.
  • the amount, by which the edge needs to extend for stretching up to the obstruction edge is the ExtendLimit.
  • the extendibility and the ExtendLimit are determined at four points, which are two endpoints of both the edges.
  • the following description provides an example of the stretching logic that is performed to stretch a vertically shaped LPDR.
  • the process discards the LPDR as there was some error in its creation.
  • the process stretches the LPDR's left edge upwards by the minimum of the LPDR width and a maximum top stretch limit.
  • the LPDR is discarded in some embodiments.
  • the process stretches the LPDR's right edge upwards by the minimum of the LPDR width or a maximum top stretch limit. If the LPDR's right edge cannot be stretched by this minimum amount, then the LPDR is discarded in some embodiments.
  • the process connects the left edge and the right edge by a 45° edge and a 135° edge respectively. The 45° and 135° edges should not exceed the top stretch limit.
  • FIG. 22 illustrates another example of the boundary adjustment operation. This example is a continuation of the examples illustrated in Figures 10, 12, and 17. This figure illustrates the creation of crown extensions for each of the LPDRs with vertical LPDs. Crown extensions 2205, 2210, and 2215 are triangular extensions extended from one side of the LPDR, while crown extensions 2220, 2225, and 2230 are triangular extensions extended from both sides of the LPDR.
  • Extensions 2235 and 2240 are four sided extensions that resulted because of the boundary of the layer or because of the minimum spacing requirement for pin access. Some embodiments might use different rules for performing boundary adjustments on layers with diagonal global preferred directions than on layers with Manhattan global preferred directions.
  • An LPDR with a Manhattan LPD and a Manhattan outline on a layer with diagonal global preferred wiring, is always permeable itself. However, the LPDRs created around it can deteriorate its permeability/routability. Accordingly, for each macro on a diagonal layer that has LPDRs on two consecutive sides, some embodiments extend the two LPDRs to join them at the corner vertex where the sides meet.
  • the modus operandi of this extension is to extend the Manhattan bound of region-end-point to a large value, and constrain the region with a diagonal bound. The bound is stretched diagonally outward from the vertex of the two consecutive sides.
  • Figure 23 illustrates an example of such an extension. Specifically, this figure illustrates expanding two LPDRs 2305 and 2310 that abut a macro 2315 to improve the routability between these LPDRs and the rest of the layer. Such a solution might lead to odd boundaries between the LPDRs, such as the contact between LPDRs 2405 and 2410 that are illustrated in Figure 24. This contact creates an impermeable edge 2415 between the LPDR 2410 and the rest of the layer as it is parallel to the global preferred wiring direction of the layer.
  • Such an impermeable edge is created because the height of LPDR 2405 is smaller than the width of LPDR 2410.
  • the two LPDRs might not be extended at all, might be extended as shown in Figure 24 but then corrected during a manual LPDR creation by a designer, or might be extended in a manner that results in the pentagonal shape for LPDR 2510 that is illustrated in Figure 25.
  • the boundary adjustment operation at 940 might lead to the LPDRs overlapping other LPDRs. So, after the boundary adjusting operation at 940, the process 900 checks (at 945) all LPDRs on the selected layer to make sure that no two LPDRs overlap.
  • the process determines (at 950) whether it has examined all the wiring layers. If not, the process returns to 905 to select another wiring layer and then performs the subsequent operations to potentially define one or more LPDs on this layer. When the process determines (at 950) that it has examined all the wiring layers that it needs to examine, the process ends. 2. Power Via Arrays Power structures often reduce the routing resources that are available on the wiring layers. Power via arrays are one example of such power structures.
  • a power via array includes a set of vias that are used to route power from power lines (also called power stripes) on the topmost metal layers down into the lower metal layers. These power stripes require Manhattan directed wiring to access the set of vias in the power array. Accordingly, as discussed above, problems in routing arise when trying to route wiring on a diagonal layer with Manhattan power stripes. As further described above, some embodiments solve this problem by defining LPDRs with Manhattan LPDs for horizontally or vertically aligned power via arrays.
  • Figure 26 illustrates a process 2600 that the LPDR generator of some embodiments uses to create LPDRs between power via arrays on diagonal wiring layers. This process creates LPDRs starting from the top-most diagonal layer and moves down until it finishes with all the diagonal layers.
  • the process considers all the power stripes in some embodiments, while considering only power stripes greater than a configurable threshold size (e.g., 100 micron) in other embodiments. The process ignores all diagonal power stripes.
  • a configurable threshold size e.g. 100 micron
  • the process creates an LPDR with the same outline as the stripe.
  • the LPD of the LPDR will be horizontal for a vertically shaped LPDR, and vertical for a horizontally shaped LPDR.
  • the capacity will be calculated for the Gcells containing the LPDR (with and without the LPDR). If the LPDR increases the capacity at least two-fold, the LPDR is added to the database. Otherwise, the LPDR will be discarded.
  • the process 2600 identifies (at 2605) the number of routing layers and the diagonal layers with no power stripes.
  • the process 2600 then iterates (at 2610) through the power and ground nets in the netclass database to identify each Manhattan power stripe that is on a layer above the lowest diagonal layer and that is larger than a particular configurable threshold size.
  • the threshold size of the Manhattan power stripe is 100 microns, although this size can be redefined by a designer.
  • Each Manhattan power stripe identified at 2610 might be used to define an LPDR on one or more diagonal wiring layers below it, as further described below.
  • To identify power vias some embodiments might represent an entire power via-stack that includes multiple cuts as one via.
  • the process defines the CurrentJ ayer as the topmost diagonal layer. It then selects (at 2620) the nearest layer that is above the CurrentJLayer and that has Manhattan power stripes. The process then determines (at 2625) whether the selected layer above the CurrentJLayer has a sufficient number of (e.g., ten) Manhattan power stripes. The number of power stripes that are sufficient is configurable in some embodiments. If the process determines that the selected layer does not have a sufficient number of Manhattan power stripes, the process transitions to 2640, which will be described below. Otherwise, the process evaluates (at 2630) the outline of each particular Manhattan stripe as a potential LPDR on the CurrentJLayer.
  • the process performs (at 2630) two capacity computations for the set of Gcells that contain the potential LPDR.
  • One capacity computation is the total capacity of all the Gcells in the set without the potential LPDR, while the other one is the total capacity of these Gcells with the potential LPDR.
  • the capacity calculation is performed with power/ground vias taken as obstructions.
  • Figure 27 illustrates an example of creating LPDRs about power structures. Specifically, this figure illustrates a wiring layer that has a diagonal global preferred direction. This layer also has a region 2705 that is underneath a vertical power stripe. Hence, as shown in Figure 27, the region 2705 can be defined as an LPDR that has a horizontal LPD. This LPD, in turn, provides horizontal routing and/or tracks that allows diagonal routing and/or tracks to pass through this region while avoiding the power-via obstacles that are defined for the vertical power stripe.
  • Figure 28 illustrates two LPDRs 2810 and 2820 that are defined for two different power stripes.
  • the LPD in each LPDR is horizontal and the global preferred wiring direction of the layer is 45° diagonal.
  • the wiring that leaves the LPDR 2810 that is defined for one power stripe can run into a power via stack 2815 in the LPDR 2820 of the other power strip.
  • Figure 28 illustrates the merging of the two LPDRs 2810 and 2820 to define a new LPDR 2830.
  • the "merged" LPD region 2830 is defined to encompass the region of both power stripes and has the same local preferred direction as the LPD of the replaced LPDRs 2810 and 2820.
  • This merging allows the wiring to traverse efficiently across the region underneath the power stripes without the obstruction that existed when the two LPDRs 2810 and 2820 were separate.
  • Some embodiment merge power-stripe LPDRs that are closer than 10% of the stripe- width.
  • Some embodiments perform the merging after the capacity-increase-based LPDR filtering because they assume that a region that does not gain capacity from a change to its routing direction, will not gain capacity even if merged with another LPDR.
  • Other embodiments might account for the merging while performing the capacity estimation and determining whether to define an LPDR.
  • the merging operation merges two aligned (e.g., horizontally aligned) LPDRs by extending one LPDR (e.g., the LPDR to the left) towards the other LPDR (e.g., the LPDR to the right).
  • HExt (HSeparationOfStripe - viaStackOffset) mod interval, where HSeperationOfStripe is the horizontal separation of the power stripes, viaStackOffset is the amount of offset between the via stack in the left stripe and the via stack of the right stripe, and interval is the distance between the two via stacks that are part of the stripe corresponding to the left LPDR.
  • Some embodiments put a ceiling on the extension to make sure that not more than a particular percent of the layer is converted to LPDRs. For example, a Horizontal extension will take place only if the value is less than the stripe's width.
  • a value greater than the ceiling is ignored, as it would not be helpful to draw anything less than the horizontal value. Hence, in such cases, some embodiments do not define the LPDR that would need to surpass the ceiling.
  • a second step after the extensions would be to check whether an LPDR has extended into the next LPDR. If so, the merging operation merges the definition of the two LPDRs, provided that they pass a capacity constraint, which will be described below.
  • the above- described approach assumes that the via-stacks within a stripe are placed at regular intervals, that the interval remains the same for the two stripes being considered, and that power- vias do not lie outside the stripes.
  • the merging operation at 2635 performs another capacity- increase-based filtering. Unaligned vias can cause the failure of capacity increase. In case of a failure, the process in some embodiments discards the merged LPDR. Instead of performing a post-processing operation to merge LPDRs for adjacent power stripes, some embodiments might generate larger LPDRs at 2630 that account for the need to have a combined LPDR for adjacent power stripes.
  • the process determines (at 2640) whether there is any diagonal layer lower than the Current_Layer. If so, the process selects (at 2645) the next lower layer, designates this layer as the Current_Layer, and transitions back to 2620, which was described above. Otherwise, the process ends.
  • Some embodiments define LPDRs about power structures in view of certain constraints. For instance, some embodiments do not create LPDRs around overlapping power stripes. In some cases, a designer has to manually analyze the LPDRs to ensure that this constraint is met. Also, as mentioned above, the LPDR generator in some embodiments first defines LPDRs about power structures and then defines LPDRs between the macros. Accordingly, the LPDR generator in some embodiments does not check whether the power- based LPDRs overlap any other existing LPDRs. In fact, the LPDR generator might delete all pre-existing LPDRs before creating any power-based LPDRs on a layer.
  • Figure 29 illustrates an example of an alternative embodiment of the invention.
  • This figure illustrates the outlines 2905 of several power stripes on a layer. It also illustrates several LPDRs that are orthogonal to the outline of the power stripes, instead of being defined parallel and in between the stripes.
  • B. Manual LPDR Generation U.S. Patent Application entitled “Local Preferred Direction Architecture, Tools, and Apparatus” filed concurrently with the present application, with the Express Mail Number EV454047165US, and attorney docket number CDN.P0076, describes the GUI of the LPDR generator of some embodiments of the invention. This application is incorporated herein by reference.
  • II. GLOBAL ROUTING Routing is at times performed in two stages, a global routing stage and a detailed routing stage. Global routing provides a general routing plan for nets in a layout.
  • the router partitions an IC-layout region into several square sub-regions. For each net being routed, the router then identifies a global route that connects the set of sub-regions that contain at least one pin of the net. Each net's global route is a set of edges (i.e., interconnect lines) that connects the set of sub-regions that contain the net's pins.
  • the identified routes might have horizontal, vertical, and ⁇ 45° diagonal
  • the router uses two grids to create a Groute graph.
  • the first grid is a coarser grid that divides the IC layout into a number of sub-regions, called Gcells.
  • the second grid is a finer grid that divides each Gcell into four sub-regions.
  • the Gcells are square. This shape supports ⁇ 45° routing, as any set of ⁇ 45° wiring tracks that cut through a square Gcell will fill its horizontal and vertical boundaries consistently.
  • the embodiments described below use the coarser grid to measure route congestion in the layout region, and use the finer grid to measure route lengths. Accordingly, below, the coarser grid is referred to as the congestion grid, while the finer grid is referred to as the length grid.
  • Figures 30 and 31 illustrate small sections of the congestion and length grids.
  • Figure 30 illustrates a 4x4 section of the congestion grid 3000. This section divides a portion of an IC region into 16 Gcells 3005. In the embodiments described below, the congestion grid divides the IC region into many more Gcells (e.g., tens or hundreds of thousands).
  • Figure 31 illustrates a section of the length grid 3100 that corresponds to the section of the congestion grid 3000 illustrated in Figure 30. As shown in this figure, the length grid divides each Gcell 3005 into four nodes 3105 on each wiring layer.
  • Figure 32 illustrates the four nodes in each Gcell on a particular layer. There are a number of planar and non-planar edges between the nodes defined by the length grid 3100.
  • edges connects two adjacent routing-graph nodes. Each such edge represents a set of wiring tracks along the edge's particular direction that connect the two sub- regions represented by the edge's two nodes. Planar node edges have different directions on different wiring layers. Several examples of planar edges are illustrated in Figures 33-41. The first set of these examples, which are illustrated in Figures 33-36, ignore possible local preferred directions on the wiring layers, in order to simply convey the notion of the planar edge on a layer.
  • Figures 37-41 provide illustrations of planar edges on layers with more than one preferred direction (e.g., a layer with a global preferred direction and one or more local preferred directions). Ignoring possible local preferred directions, Figures 33-36 illustrate planar edges on layers 2-5 along the global preferred directions of these layers in some embodiments. Some embodiments assume that there are no planar node edges between routing-graph nodes on layer 1, as this layer is often quite congested. Some of these embodiments promote all the pins on layer 1 to layer 2. Other embodiments, however, specify planar node edges on layer 1. In some of these embodiments, the planar node edges on layer 1 are in the same direction as planar node edges on layer 3.
  • Figure 33 illustrates that on layer 2 a vertical node edge 3305 exists between each pair of vertically adjacent nodes in a region on layer 2 that is to be routed according to the vertical global preferred direction of layer 2.
  • Figure 34 illustrates that on layer 3 a horizontal node edge 3405 exists between each pair of horizontally adjacent nodes in a region on layer 3 that is to be routed according to the horizontal global preferred direction of layer 3.
  • Figure 35 illustrates that 45° diagonal node edges exist between northwest nodes 3505 and southeast nodes 3510 of different Gcells in a region on layer 4 that is to be routed according to the 45° diagonal global preferred direction of layer 4. As shown in this figure, no 45° diagonal node edges are incident on northeast nodes 3515 and southwest nodes 3520.
  • Figure 36 illustrates that -45° diagonal node edges exist between northeast node 3515 and southwest nodes 3520 of different Gcells in a region on layer 5 that is to be routed according to the -45° global preferred direction of layer 5. As shown in this figure, no -45° diagonal node edges are incident on northwest nodes 3505 and southeast nodes 3510. For embodiments that allow local preferred directions on layers 2-5, Figures 37-40 illustrate potential planar edges along potential local preferred directions on layers 2-5. These edges are potential edges as they would only be defined if the nodes that they connect fall within regions that have their local preferred directions coincide with the direction of the edges. For instance, for layer 2, Figure 37 illustrates a potential horizontal node edge 3705 between each pair of horizontally adjacent nodes and a potential -45° edge 3710 between
  • Figure 38 illustrates a potential vertical node edge 3805 between each pair of vertically adjacent nodes and a potential 45° edge 3810 between northwest and
  • Figures 39 and 40 illustrate a potential vertical node edge 3905 between each pair of vertically adjacent nodes and a potential horizontal node edge 3910 between each pair of horizontally adjacent nodes on layers 4 and 5.
  • Figures 37-40 some embodiments allow only one diagonal direction on any layer. Some embodiments allow different diagonal directions for planar edges on the same layer, but never on the same Gcell boundary.
  • Figure 41 illustrates an example of a routing graph for layer 3 in a case where layer 3 has a horizontal global preferred direction and two regions 4105 and 4110 that respectively have a -45° and +45° local preferred
  • each Manhattan node edge has a unit length cost (L).
  • each diagonal node edge has a length cost that equals the unit length cost times
  • the use of a node edge across a Gcell boundary reduces the capacity of the boundary, and is thereby assessed a wire congestion cost.
  • the router examines wire congestion at Gcell boundaries on each layer available for routing. Specifically, the router computes capacities at Gcell boundaries on each routing layer.
  • the wiring resources i.e., wiring tracks
  • the capacity of a congestion edge between two Gcells is the wiring capacity for all available wiring directions between the two Gcells.
  • the allowed wiring direction is the global preferred direction.
  • the allowed wiring directions are the two or more wiring directions in some embodiments.
  • Figure 42 illustrates an example of the planar congestion edges that are used to measure congestion along layer 3 for the example illustrated in Figure 41. As illustrated in Figures 33 and 34, up to two vertical or horizontal planar edges can cross the boundary between each pair of vertically or horizontally adjacent Gcells in some embodiments. In addition, as illustrated in Figures 37-40, a diagonal edge can cross the boundary between two Gcells.
  • the congestion along two horizontally aligned Gcells can be attributable to obstacles or routes along the two horizontal planar edges and the one diagonal planar edge that cross the boundary between these Gcells.
  • the congestion along two vertically aligned Gcells can be attributable to obstacles or routes along the two vertically planar edges and the one diagonal planar edge that crosses the boundary between these Gcells.
  • B. Overall Flow of the Router Figure 43 illustrates a process 4300 that conceptually represents the overall flow of the router in some embodiments of the invention. As shown in this figure, the process 4300 initially uses (at 4305) the congestion and length grids 3000 and 3100 to partition the IC layout region into numerous Gcells, with four nodes on each routing layer in each Gcell.
  • these Gcells and nodes define a Groute graph in which the router defines and embeds routes.
  • the Groute graph includes a grid for each wiring layer.
  • the process selects one of the wiring layers.
  • the process identifies (at 4315) edges between the nodes of the routing graph for the selected layer, based on the global preferred wiring direction and the local preferred wiring directions (if any) of the selected layer.
  • the routing graph for each layer includes numerous potential horizontal, vertical, and diagonal edges.
  • the process examines each potential edge in the routing graph of the selected layer.
  • the process specifies an actual edge in the selected layer's routing graph for each potential edge that matches a certain set of criteria.
  • the process also defines the capacity at each Gcell boundary on the selected layer based on the global preferred wiring direction and the local preferred wiring directions (if any) of the selected layer.
  • the wiring resources i.e., wiring tracks
  • the capacity of a congestion edge between two Gcells is the wiring capacity for all available wiring directions between the two Gcells.
  • Different embodiments compute the capacity of edges in the global routing graph differently.
  • some embodiments compute the capacity of edges in the Groute graph that correspond to regions in the layout with multiple different preferred directions based on novel capacity estimation techniques, while computing the capacity of edges in the Groute graph that correspond to regions in the layout with only one preferred direction based on existing capacity estimation techniques. Edge capacity computations will be further described in Section D below.
  • the process also computes the via capacity for each Gcell. Different embodiments compute the via capacity differently. In a given Gcell, some embodiments compute the via capacity based on an area-based sampling of open areas within the Gcell. Other embodiments compute the via capacity between two adjacent layers in a Gcell as a user-adjustable constant times the maximum of all capacities of planar congestion edges into the Gcell on either of the layers.
  • the process determines (at 4320) whether it has examined each wiring layer. If not, the process returns to 4310 to select another layer, and then performs the edge identification and capacity computations for this layer 4315. When the process determines that it has examined each routing layer, it transitions to 4325. At 4325, the process selects a net for routing. It then specifies (at 4330) source and target sets for performing a path search for the selected net, and then performs a path search at 4335.
  • the process For the first path search that the process performs to define a route for the selected net, the process often selects a node set that is associated with a particular pin of the net as the target set and specifies the nodes of the nearest K pins (where K can be 1) of the net as the source set.
  • the nodes include any Steiner nodes that might have been defined for the net.
  • the process defines (1) the target set as all the nodes that are associated with the routed pins and Steiner points of the net, and all nodes that are currently on the one or more paths embedded for the net during the current route generation, and (2) the source set as all nodes associated with any unrouted pin and Steiner point in the net's configuration that are within a certain distance of the target set.
  • the path search performed at 4335 is an A* path search that at each iteration tries to extend a partial solution with the best estimated cost. Specifically, during its path exploration phase, the process starts its path search by specifying the start of one or more paths from one or more source nodes.
  • FIG. 44 illustrates a path search that starts at a node 4405 and ends at a node 4410. In reaching node 4410, this path search has explored various expansions.
  • One of the expansions that has been identified is the expansion 4415 from node 4420 to node 4410 across Gcell boundary 4425.
  • the path search operation determines whether the Gcell boundary 4425 has sufficient available capacity to define another route across this boundary in the direction of the expansion 4415.
  • the available capacity across a Gcell boundary (such as boundary 4425) equals the initial capacity that the global router computed at 4315 minus the estimated number of tracks that it has since defined across that boundary.
  • the path search operation determines that an identified expansion is crossing an overcongested Gcell boundary, it either discards the expansion as a non- viable expansion or assigns this expansion a high cost.
  • the process embeds (at 4335) the identified path and then transitions to 4340.
  • the process determines whether it has defined a complete route for the net selected at 4325 (i.e., whether it has defined a route that connects all the pins of the net). If not, the process transitions back to 4330 to define new source and target sets for another path search, and then performs this path search to further define the route for the selected net.
  • the process determines (at 4340) that it has completely defined the route for the selected net, it determines (at 4345) whether it has completed its routing of all the nets. If not, the process transitions back to 4325 to select another net for routing.
  • the global routing process 4300 rips up and redefines routes for a particular net one or more times, in order to facilitate the routing of other nets or to improve the routing of the particular net.
  • one or more of the path search operations that the routing process performs for a particular net might not identify a path between source and target sets. In these instances, the routing process tries several times to identify such a path, and when it fails, it flags the net as one that it was not able to route.
  • the process 4300 determines (at 4345) that it has completed its routing of the nets, it terminates.
  • the routing graph for each layer includes numerous potential horizontal, vertical, and diagonal edges.
  • the global routing process 4300 specifies each potential edge in the routing graph of the selected layer as an actual edge if the potential edge matches a set of criteria. For instance, in some embodiments, the process specifies an actual edge in the selected layer's routing graph for each potential edge that has its direction match the global preferred direction or one of the local preferred directions of the selected layer. A direction of a potential edge matches a preferred direction on the selected layer when the potential edge's direction matches the preferred wiring direction of at least a portion of the sub-region that is represented by a node connected by the potential edge.
  • the above-described Figure 41 illustrates an example of specifying actual edges between the routing graph nodes on layer 3 based on the global preferred horizontal direction and the two local preferred diagonal directions of this layer.
  • FIG. 45 illustrates several examples of edge regions. Specifically, this figure illustrates a wiring layer that has been divided into a set of Gcells and four quadrants (i.e., four nodes) in each Gcell. The possible edges in some embodiments between such nodes were described above in Figures 37-41.
  • the potential horizontal (H) edges are between SE-SW and NE-NW quadrants
  • the potential vertical (V) edges are between NW-SW and NE-SE quadrants.
  • These potential Manhattan edges come in two flavors: external (between quadrants in different Gcells) and internal (between quadrants in the same Gcell).
  • the potential diagonal edges include 45° (D45) edges between SE-NW quadrants of different Gcells, and -45° (D135) edges between SW-NE quadrants of different Gcells.
  • Figure 45 illustrates examples of six edge regions for six potential edges.
  • edge regions are (1) the edge region 4505 that is associated with the internal horizontal edge 4510, (2) the edge region 4515 that is associated with the external horizontal edge 4520, (3) the edge region 4525 that is associated with the internal vertical edge 4530, (4) the edge region 4535 that is associated with the external vertical edge 4540, (5) the edge region 4545 that is associated with the external D45 edge 4550, and (6) the edge region 4555 that is associated with the external D135 edge 4560.
  • some embodiments define f , fv, rws, or fb 135 , which are the fraction of the area in the edge's associated edge region on that layer at which the preferred direction matches the edge type.
  • Some embodiments use the following rules to determine whether to specify an actual edge for a potential edge, where fu can be either f and fv, fb can be fb 5 or f ⁇ 35 :
  • Manhattan edge o Define an actual edge if the f of an external potential Manhattan edge (i.e., a Manhattan edge that connects two nodes in two different Gcells) is greater than one third. o Define an actual edge if the fM of an internal potential Manhattan edge is greater than zero.
  • Diagonal edge o Define an actual edge if the fb of an external potential diagonal edge (i.e., a diagonal edge that connects two nodes in two different Gcells) is greater than one half.
  • the router allows a designer to adjust these parameters. It should be noted that the potential D45 and D135 edges across any Gcell boundary are associated with the same diamond-shaped stitch region. To avoid generating unresolvable nonplanaraties, some embodiments at most define only one of these diagonal edges at any Gcell boundary. The proposed criterion, fb > 1/2 , ensures only one diagonal edge is defined at any Gcell boundary. If a value less than 1/2 is selected, it would become possible for both edge directions to exceed the threshold, in which case some embodiments define an edge only in the direction with the greater fraction.
  • D45 and D135 routes use disjoint sets of quadrants ( ⁇ SE, NW ⁇ and ⁇ SW, NE ⁇ , respectively). To avoid every route between such regions having to via to another layer and back, some embodiments stitch adjacent quadrants together if they are touched by D45 and D135 stitches.
  • D. Edge Capacity Estimation As mentioned above, some embodiments compute the capacity of edges in the Groute graph that correspond to regions in the layout with only one preferred direction based on existing capacity estimation techniques.
  • U.S. Published Patent Application 2004-0098680 describes some of the existing capacity estimation techniques. These embodiments, however, compute the capacity of edges in the Groute graph that correspond to regions in the layout with multiple different preferred directions based on novel capacity estimation techniques.
  • some embodiments To define the capacity along a particular edge that crosses a particular Gcell boundary in a particular direction (e.g., a horizontal edge between two Gcells), some embodiments first identify a capacity tile that is associated with the particular edge.
  • the capacity tile for a particular edge is identical to the edge region that was used to determine whether to define the particular edge.
  • the above-described Figure 45 illustrated several examples of edge regions for different types of external edges (where an external edge is an edge between two Gcells). In other embodiments, however, the capacity tile associated with a particular edge is different than the edge region of the particular edge. For instance, in some embodiments, the capacity tile is a square that is one Gcell wide and that is centered about the Gcell boundary crossed by the particular edge.
  • FIG. 46 Two such capacity tiles are illustrated in Figure 46.
  • the dark-outline squares depict the Gcells 4605, 4610, 4615, and 4620
  • dashed- outline squares represent the capacity tiles 4625 and 4630.
  • the capacity tiles are used for both diagonal and Manhattan directions.
  • the Gcell boundary between cells 4605 and 4610 is designated as an E- W edge
  • the Gcell boundary between cells 4615 and 4620 is designated as a N-S edge.
  • the possible planar edges along the E-W edge can be horizontal, 45°, and -45° directions
  • the possible planar edges along the N-S edge can be vertical, 45°,
  • FIG. 47 illustrates an example of pixelating a capacity tile 4700 into numerous tiles with pixels at their centers. As shown in this figure, capacity tile 4700 includes two obstacles 4705 and 4710, and one region 4750 with a 45° local preferred direction.
  • a pixel has three attributes: (1) RoutingJDirection, which can be any of H, V, D45, or D135, (2) blocked, which can be true or false to indicate whether the pixel is free or blocked, and (3) half-blocked, which when set indicates that the pixel is only half blocked (as opposed to full blocked when the blocked field is true).
  • the routing direction of a pixel will be the routing direction at the pixel's location. If the pixel is on the edge/vertex of an LPDR, a precedence order (DO, D90, D45, D135) will determine the direction.
  • a precedence order DO, D90, D45, D1305 will determine the direction.
  • One reason to have a well-defined precedence is to remove any dependency on LPDR-ordering or platform.
  • a pixel is flagged as a blocked pixel when a blockage (e.g., an obstacle, pin, or a previously defined route) overlaps some portion of the tile associated with the pixel.
  • a blockage e.g., an obstacle, pin, or a previously defined route
  • a pixel will not be designated as a blocked pixel by a mere touch of a blockage, in some embodiments, there must be a non-zero overlap between the pixel's tile and a blockage before the pixel is deemed to be blocked.
  • the distance between the pixels will determine the accuracy of detecting narrow single-track openings.
  • Some embodiments define the pixel pitch equal to the track pitch. When the pixel pitch equals the track pitch, an opening up to 2.0 track-pitches might, depending on alignment with respect to the pixels, get flagged as no-opening, as shown in Figure 48.
  • some embodiments then perform a ray tracing operation to quantify the capacity of the particular edge.
  • a ray Given a starting pixel from a starting set of pixels, a ray can be traced by jumping along the routing-direction to the next pixel, and then using the next pixel's routing-direction for the subsequent move and so on. The ray will end when it reaches an end pixel in an ending set of pixels, or when it reaches a blocked edge or a previously used pixel. If the ray fails to reach an end pixel, the ray will be discarded and all the pixels that the ray used before failing will be freed up for use by a subsequent ray- traversal.
  • FIG 47A illustrates an example of such ray tracing.
  • the ray tracing is performed from a start pixel in the leftmost pixel column to an end pixel in the rightmost pixel column.
  • Figure 47A presents two sets of pixels as blacked out to illustrate that they are blocked by obstacles 4705 and 4710 in the capacity tile 4700.
  • this figure illustrates a horizontal ray 4720 (at the top of the pixelated tile 4700) that traverses across this tile completely in the horizontal direction. It also illustrates three rays 4730, 4735, and 4740 that traverse across the pixelated tile first in a horizontal direction, then in a 45° direction, and
  • Figure 47A illustrates one ray 4745 that never reaches a pixel in the rightmost pixel column. This rays gets blocked at pixel 4755 because this pixel's direction (which is the LPD of the LPDR 4750) would require the ray to use pixel 4760, which was previously used by ray 4720. In some cases, ray tracing might not give the same result if the ray is started from the end point.
  • Figure 47B illustrates an example that is identical to the example illustrated in Figure 47 A, except that in Figure 47B the ray tracing is performed from right to left. As shown in Figure 47B, this ray tracing results in only one ray reaching its destination.
  • pixels 4910, 4915, and 4920 have to be free. Such a move would result in the marking of pixel 4910 as being blocked. It would also result in the marking of pixels 4915 and 4920 as being blocked as the destination of a ray for all directions and as being "half used" for the 45° direction.
  • a half used pixel for a particular diagonal direction is a pixel that cannot serve as tne destination of a ray in the particular diagonal direction but can serve as the neighboring pixel to two pixels that are connected in the 45° direction.
  • Pixel 5005 in Figure 50 is an example of a pixel that has two half uses. Specifically, half of this pixel is used by wire 5010, while the other half of this pixel is used by wire 5015. b.
  • some embodiments determine the move direction in a way such that two criteria are met.
  • First to match the behavior of the detailed router, there is no permeability if the orthogonal regions are separated by an edge that is perpendicular (or parallel) to any of the two directions.
  • Figure 52 This figure illustrates a horizontal ray 5205 that terminates when it reaches a LPDR 5210 with a vertical LPD, since the boundary of the LPDR region is orthogonal to the horizontal direction and parallel to the vertical direction.
  • the direction is away from the existing region, so that the move cannot re- enter the region, and then zig-zag along the border.
  • Figure 53 illustrates an example of this criteria.
  • This figure illustrates a horizontal ray 5305 that enters an LPDR region 5310 with a vertical LPD.
  • the LPDRs boundary reached by the ray is neither parallel nor orthogonal to either direction.
  • the ray 5305 can continue through the LPDR along its LPD.
  • the ray moves up in the 90° direction instead of down in the -90° direction since
  • a ray tracing operation will be performed after pixellating a capacity tile.
  • the starting point of the rays will be dependent on the planar edges that are available across the Gcell boundary associated with the capacity type.
  • Each edge-type will have a corresponding set of start and end-points along the tile boundary.
  • Union of the start-points for all the edges available along the Gcell boundary will be the start points for the entire outline.
  • the end-points will be chosen in a similar fashion.
  • Figure 54 provides an illustration of eight sections Ctnl, Ctn2, Ctsl, Cts2, Ctwl, Ctw2, Cte2 along the boundary of a tile that define eight different sets of pixels that can server as start and end points for different ray tracing operations.
  • the convention used for naming these eight sections is capacity tile section name: ct ⁇ directionChar> ⁇ num>.
  • Table 2 below provides the start and end-points for each ray tracing operation for each edge-type.
  • the rays will begin from the pixels along the starting edges. The order of selecting pixels will be anti-clockwise beginning with the ctnl edge. Once a ray is able to reach its end-target, its orientation will be determined based on its two end-points. The ray will be classified by the X-angle (DO, D45, D90 or D135) closest to the orientation. If the stitch to which the ray gets classified is not available, the ray will be discarded and all the pixels will be freed for any subsequent traversal. The capacity along an edge is the total number of rays that successfully traverse from "start" to "end". Figure 55 illustrates the start and end edges for the 45° and 135° directions. As
  • the start and end edges are the edges of the locus of the third quadrant (Q3) of the capacity tile moving to the tile's first quadrant (Ql) for 45° edge, and the locus of
  • FIG. 56A illustrates projecting the extension of the obstruction past the tile on the right hand side onto the capacity tile section Cte2 in the -135° direction.
  • Figure 56B illustrates projecting the extension of the obstruction
  • Some embodiments do not do this because of a 4-times increase in ray-tracing work and pixel-memory consumption. Memory consumption could, however, be controlled by not storing directions for pixels. These could be determined during ray-tracing (for the entire Gcell at one-go). For faster runtimes, a bottom up search mechanism for a KD tree could be used. This would significantly increased the implementation time. Also, the above-described model has just one pixel-grid per direction. Other embodiments create a pixel grid for each direction, and define transition zones (around LPD outlines) to move from one grid to another. III. DETAILED ROUTING Some embodiments of the invention provide a detailed router that, based on an LPD wiring model, specifies detailed routes for nets in a layout.
  • the detailed router of some embodiments employs three techniques to facilitate the creation of detailed routes based on an LPD wiring model. These techniques are (1) the extension of the tracks in each LPD region, (2) the use of upto four wiring grids for each wiring layer, and (3) the dynamic selection of via pads based on LPDs. Each of these three techniques is further described below. However, before describing these techniques, certain terms and concepts are first described below.
  • A. Terms and Concepts A detailed router defines detailed routes for nets in an IC layout. Each net includes a set of routable elements in the IC-layout region. The routable elements are pins in the embodiments described below, although they might be other elements in other embodiments.
  • a detailed route has one or more route segments. A route segment is a portion of a detailed route that is along a particular routing direction.
  • each route segment in terms of a "line segment” and one "style” for each segment.
  • Each line segment is defined in terms of a start point and an end point.
  • a style specifies eight values that can be used to transform the line-representation of a line segment into a convex polygonal shape that represents the route segment. This complex polygonal shape is the more complete geometric representation of the segment.
  • the eight values of a style include four low values, dxLo, y o, dsLo, dtLo, and four high values, dx ⁇ i, dym, dsm, and dtm-
  • the low values are subtracted from the lowest x-, y-, s- and t-values of the line segment's start and end points, in order to obtain the low values of convex polygon (i.e., the route segment) that represents the line segment.
  • the high values are added to the highest x-, y-, s-, and t-values of the line segment's start and end points to obtain the high values of the convex polygon.
  • the phrase "interconnect line” is synonymous with "route segment,” and the two phrases are often used interchangeably.
  • a routing graph is a graph that includes at least one routing grid for each wiring layer.
  • each routing grid has a preferred direction and includes numerous routing tracks that are along its preferred direction.
  • Figure 57 illustrates four possible routing grids 5705-5720.
  • Each grid includes numerous tracks 5730 that are in the grid's preferred direction.
  • the routing grid 5720 has numerous tracks 5730d that are in this grid's +45° preferred direction.
  • Each track is formed by numerous edges that connect numerous grid points 5735 along the track.
  • the router is said to be a "gridded” router when the grid points in the routing graph (i.e., the grid points in the routing grids) do not include all the grid points of the manufacturing grid, which is the grid used by the IC manufacturing process.
  • the router is said to be "gridless” when its routable states (e.g., its grid points, nodes, lines, surfaces, etc.) are not aligned with any arbitrary routing grid.
  • the routable states of a gridless router are typically aligned with the grid of the manufacturing process (i.e., typically each point on the manufacturing grid is a routable state in one of the routing grids), so that the final layout can be easily manufactured.
  • the routable states of gridless routers might not even be aligned with the manufacturing grid.
  • the routable states of gridless routers are aligned with a grid that is even finer (i.e., has a higher resolution) than the manufacturing grid.
  • the grid points along the tracks serve as the start, intermediate, termination, and bend points of routes.
  • a route segment can go from a first grid point on a first track to a second adjacent grid point on a second track (i.e., a route can have a segment that traverses within the grid in a direction that is not the preferred direction of the particular grid), but such a route segment is assessed a cost that is greater than a segment that connects two adjacent grid points along the same track.
  • This differential in costing is what makes the directions illustrated in Figure 57 preferred directions. In other words, the directions of the tracks illustrated in Figure 57 are preferred directions of their grids because routing along these directions is less costly than routing along other directions within these grids.
  • a route segment that connects two adjacent grid points 5735a and 5735b costs less than a route segment that connects the two adjacent grid points 5735a and 5735c.
  • a detailed route can traverse multiple layers.
  • Such a route is a multi-layer route.
  • a multi-layer route uses at least one non-planar segment to traverse from one layer to another. This non-planar segment is called a via.
  • a via includes (1) one pad on each of the two layers that it traverses and (2) a cut that is the three- dimensional hole between the two layers.
  • Figure 58 illustrates three vias, a first via 5805 that is between wiring layers 3 and 4, a second via 5810 that is between wiring layers 4 and 5, and a third via 5860 that is between wiring layers 3 and 4.
  • Via 5805 has pad 5815 on layer 3, pad 5820 on layer 4, and cut 5825 between layers 3 and 4.
  • Via 5810 has pad 5830 on layer 4, pad 5835 on layer 5, and cut 5840 between layers 4 and 5.
  • Via 5860 has pad 5870 on layer 3, pad 5865 on layer 4, and cut 5875 between layers 3 and 4.
  • the shape of the cut of each via is represented by a polygon.
  • polygons 5845, 5850, and 5880 represent the shapes of the vias 5805, 5810, and 5860.
  • the detailed router expands the tracks in each LPD region on each layer by a certain amount so that tracks in adjacent LPD regions slightly overlap. This overlap, in turn, allows a detailed route to switch from a first track in a first LPDR with a first particular LPD to a second track in a second LPDR with a second particular LPD.
  • Figures 59A-59D present an example that illustrates how the extension of the tracks in the LPDRs facilitates switching between different tracks in different LPDRs.
  • Figure 59A presents a wiring layer 5900 that has three LPDRs 5905, 5910, and 5915, which respectively have vertical, horizontal, and -45° diagonal LPDs.
  • Figure 59B presents three
  • regions 5920, 5925, and 5930 which are respectively expanded versions of LPDRs 5905, 5910, and 5915.
  • Figure 59C presents an example of the horizontal and -45° diagonal wiring tracks
  • a route path can expand along two directions that are the two preferred directions of the two LPDRs.
  • Figure 59D illustrates a path 5960 that has reached a grid point 5940 in the overlapping region 5935 between LPDRs 5925 and 5930.
  • the path 5960 can expand to grid point 5945 along the -45° direction and grid point 5950 along the 0° direction. Both these possible expansions will be along the two preferred directions of the overlapping region. Hence, neither of these expansions will be assessed a non-preferred-direction expansion cost.
  • C. Multiple Grids for Each Wiring Layer with LPDRs To route a set of nets, some embodiments define a routing graph that includes upto four routing grids for each routing layer.
  • Each routing grid for a layer has some or all of the grid points of the routing graph on the particular layer.
  • the purpose of each particular routing grid for a layer is to define tracks that are available in a particular direction between the routing graph's grid ponts on that layer.
  • Figure 60 illustrates an example of using multiple routing grids for the wiring layer 5900 of Figure 59 A.
  • the wiring layer 5900 has a 45° global preferred direction. This
  • example shows (1) a first grid 6005 having tracks 6025 along the 45° global preferred
  • Each grid is used to define available routing tracks along a local preferred direction on the particular wiring layer. In each grid, regions that have a different preferred direction than the grid's preferred direction are "blocked-out," i.e., are not available for defining routes along the grid's preferred direction.
  • a path search operation of the detailed router searches for routing paths between pins and/or previously defined route segments of nets, by exploring path expansions between the grid points of the grids of the routing graph.
  • this path search operation assesses a penalty cost for an expansion between two grid points that are not on the same track.
  • This penalty cost is a non-preferred-direction-expansion (NPDE) penalty cost.
  • NPDE non-preferred-direction-expansion
  • the path search does not assess such an NPDE penalty cost for an expansion between two grid points that are on the same track.
  • this figure illustrates the extension 6105 of the -45° tracks 6030 in the second grid 6010, the extension 6110 of the horizontal tracks 6035 in the third grid 6015, the extension 6115 of the vertical tracks 6040 in the fourth grid 6020, and the extension 6120 of the 45° tracks 6025 in the first grid 6005.
  • These extensions of the tracks results in multiple preferred directions being associated with certain grid points at the boundaries of the LPDRs.
  • the extension of the -45° tracks 6030 allows certain grid points at the boundaries of the LPDRs 5905, 5910, and 5915 to be on two different tracks that are along two different LPDs.
  • the detailed routers of some embodiments dynamically define vias in a design layout based on the LPD wiring model of the design layout. Specifically, when defining a via between a first region of a first layer and a second region of a second layer, these embodiments select the shape of the via pads and via cuts based upon the preferred direction of both regions. This dynamic selection of the via-pad and via-cut shapes allows these embodiment to use vias that are optimized for connecting wire segments along different directions.
  • Figure 62 illustrates an example of using different via pad shapes between different regions of two wiring layers in a layout.
  • This example illustrates a perspective view of a multi-layer design layout that has a wiring layer N with a vertical global preferred direction and a wiring layer N+l with a diagonal global preferred direction.
  • a directional-axis indicator 6205 is provided in Figure 62 to identify the wiring directions according to the perspective-view.
  • layer N has a rectangular shaped LPDR 6235 with a diagonal local preferred direction
  • layer N+l has a rectangular shaped LPDR 6205 with a horizontal local preferred direction and an octagonal shaped LPDR 6215 with a vertical local preferred direction.
  • Figure 62 also illustrates three vias between layer N and layer N+l.
  • the first via is defined between the wiring area of layer N and LPDR 6205 on layer N+l .
  • This first via has a square shaped via pad 6240 in the wiring area of layer N and a rectangular via pad 6210 aligned along the vertical axis in LPDR 6205.
  • a second via is defined between LPDR 6235 on layer N and LPDR 6205 on layer N+l.
  • This second via has an octagonal-shaped via pad 6250 in LPDR region 6235 and a rectangular shaped via pad 6220 aligned along the vertical axis in LPDR 6205.
  • a third via is defined between LPDR 6235 on layer N and LPDR 6215 on layer N+l.
  • This third via has an octagonal shaped via pad 6260 in LPDR 6235 and a rectangular shaped via pad 6230 aligned along the horizontal axis in LPDR 6215.
  • Route Generation Figure 63 illustrates the overall flow of a router that uses the above-described three techniques, i.e., that extends the tracks in each LPD region, uses upto four wiring grids for each wiring layer, and dynamically selects via pads and via cuts based on LPDs. As shown in this figure, the router initially defines (at 6305) a routing graph for the region being routed. As discussed above by reference to Figure 60, the routing graph in some embodiments includes upto four routing grids for each wiring layer.
  • the tracks in the routing grids of some embodiments are extended beyond their respective LPDR's to facilitate switching between different preferred directions on a layer.
  • the routing graph includes cut-plane grids that are used to define vias between pairs of adjacent layers. The use of cut-plane grids is further described in U.S. Patent Application 10/751,332, filed on 01/02/2004. This application is incorporated herein by reference.
  • the process selects (at 6310) a set of nets for routing.
  • the selected set of nets are nets that have the same metastyle.
  • a metastyle specifies one style for each layer and one via style for each pair of adjacent layers.
  • the process (at 6315) identifies an "unroutable" bloated region about each previously defined geometry (e.g., an obstacle, wire, or via pad) for each potential route segment (i.e., each potential wire segment or via pad) that can neighbor the geometry.
  • the process also defines (at 6315) one bloated region about the cut's geometry for each via cut that can neighbor the previously defined via cut.
  • the process defines the bloated regions at 6315 by using the approaches described in U.S. Paent Application 10/751,332.
  • the defined bloated regions specify unroutable grid points (for different wire directions and via types) in the grids and cut planes of the routing graph.
  • the process next selects (at 6320) a net to route. It then performs (at 6325) one or more path searches to identify a route for the net, where each path search results connects two pins of the net or connects a pin of the net to a previously defined segment of the route.
  • each successful path search i.e., each path search that reaches a target grid point from a start grid point
  • the process in some embodiments performs a back-trace operation that defines a route portion that traces the set of expansions that connected the start and target grid points.
  • the path search and/or embedding operations might in some embodiments rip-up routes defined previously for previously routed nets.
  • each path search uses the bloated regions defined at 6315 and 6330 and/or the unroutable markings defined at 6315 and 6330 to figure out viability of path expansions that it identifies. This viability determination will be further described below.
  • the routing process 6300 identifies, if necessary, an "unroutable" bloated region about each geometry or via cut of the route that the process just defined in the last iteration through 6325.
  • the process defines the bloated regions at 6330 based on the approach described in U.S. Patent Application 10/751,332. After 6330, the process determines (at 6335) whether it has examined all the nets in the set selected at 6310. If not, the process returns to 6320 to select another net, and repeats the operations 6325 and 6330 for this net. Otherwise, the process determines (at 6340) whether it has defined routes for all the sets of nets that it needs to route. If not, the process returns to 6310 to select another set of nets to route, and then repeats 6315-6335 for this set of nets. When the process determines (at 6340) that it has examined all the sets of nets, the process terminates. F..
  • Path Search Each path search explores the grids of the routing graph to identify a path between a set of source points and a set of target points.
  • the routing process 6300 might use one of many different path search techniques (such as line search, maze search, A*, etc.) to identify one set of expansions that connect source and target grid points that are defined for each path search.
  • path search techniques such as line search, maze search, A*, etc.
  • a path search process typically explores numerous path expansions.
  • a path expansion starts at a particular grid point (called a start point) and goes to a particular grid point (called a destination point).
  • Figure 64 illustrates a process 6400 that the routing process 6300 performs to identify and asses a path expansion.
  • This process (1) identifies a potential expansion, (2) determines the viability of the potential path expansion, and (3) when the expansion is viable, costs the expansion.
  • the process 6400 initially identifies (at 6405) a potential expansion from a start grid point to a destination grid point.
  • the expansion identified at 6405 can be a planar expansion on a particular layer. This expansion can be along a preferred direction on the particular layer. In other words, the start and destination points of the expansion can lie on the same track.
  • the expansion's start point might lie on multiple tracks when the point is near an LPDR boundary where the tracks have been extended to facillitate switching between the preferred wiring directions. For such a start point, there are multiple expansions that are along preferred directions on the particular layer.
  • the identified planar expansion can also be along a non-preferred direction on the particular layer (i.e., the start and destination points might not lie on the same track). However, as further described below, such an expansion will be assessed a penalty cost.
  • the expansion identified at 6405 can also be a via expansion between two different layers in the layout.
  • the process uses (at 6405) the directions of the tracks on which the start and destination points exist to select dynamically (1) the shape of the via pads about the start and destination points of the identified expansion, and (2) the shape of the via cut polygon. For instance, the process might identify an octagonal via cuts and octagonal via pads on layers N and N+l when the expansion's start point is on a horizontal track on a layer N while the expansion's destination point is on -45° tracks on
  • the process might identify square via cut and square via pads on layers N and N+l, when the expansion's start and destination points are on Manhattan wiring tracks on layers N and N+l .
  • Some embodiments store in a data storage the shapes of each via cut and each pair of via pads that can potentially be used to define vias between two layers in a layout.
  • the particular via cut shape and the particular pair of via pad shapes are defined for a particular pair of preferred directions on the two layers in the layout.
  • the particular pair of directions are the directions of the tracks on the two layers that connect the start and destination points for the expansion.
  • the shapes of the via cut and the via pads that are to be defined about the start and destination points of the expansion can be retrieved (at 6405) from the data storage based on the direction of the tracks on which the start and destination grid points are defined.
  • the start or destination point of the expansion might lie on tracks when the point is near an LPDR boundary where the tracks have been extended to facillitate switching between the preferred wiring directions.
  • multiple pairs of via pad shapes or multiple via cuts might be identified at 6405.
  • the process 6400 selects (at 6405) one of these pairs of via pad shapes and one of the via cuts by examining all of the available shapes to select the best one.
  • the process determines (at 6410) whether the via cut that needs to be used for the identified expansion is within the bloated region of a previously specified via cut between the same two layers traversed by the identified expansion. To make this determination, the process determines whether the expansion's cut falls within a bloated region (i.e., whether the expansion's cut encompasses any grid points marked unroutable) in the cut planes for the same two layers traversed by the identified expansion.
  • the process determines (at 6410) that the cut is within another cuts bloated region, it specifies (at 6415) the expansion as a non-viable expansion, and then ends. Otherwise, the process determines (at 6420) whether the via pad that contains the source or destination point of the identified expansion encompass any point on the pad's layer that is within the bloated region for the pad's type on the pad's layer (e.g., whether the via pad containing the source or destination point of the potential expansion encompasses any point on the pad's layer that has been marked unroutable for the pad's type on the pad's layer). If so, the process specifies (at 6415) the expansion as a non- viable expansion, and then ends.
  • the process specifies (at 6425) the expansion as a viable expansion, computes (at 6430) a cost for this expansion, stores (at 6435) this expansion, and then ends.
  • the process determines (at 6440) whether the destination point of the potential expansion is within the bloated region for the particular direction on the particular layer (e.g., whether the destination point of the potential expansion has been marked unroutable for the direction of the expansion on the particular layer). If so, the process specifies (at 6415) the expansion as a non- viable expansion and then ends. Otherwise, the process 6400 specifies (at 6425) the expansion as a viable one, computes (at 6430) a cost for this expansion, stores (at 6435) this expansion, and then ends.
  • the expansion cost computed at 6430 includes an NPDE penalty cost.
  • the process stores (at 6435) the expansions in a storage structure that is sorted according to the costs of the expansions. In this manner, the path search process can easily retrieve the least costly expansions from the storage structure.
  • the path search process is an A* search process that after retrieving the lowest cost expansion from the storage strucure, (1) determines whether the expansion was to a target grid point, (2) if the expansion was to a target grid point, terminates the search and (3) if the expansion was not to a target grid point, performs the process 6400 one or more times to identify additional path expansions from the retrieved expansion. IV.
  • COMPUTER SYSTEM Figure 65 conceptually illustrates a computer system with which some embodiment of the invention are implemented.
  • Computer system 6500 includes a bus 6505, a processor 6510, a system memory 6515, a read-only memory 6520, a permanent storage device 6525, input devices 6530, and output devices 3035.
  • the bus 6505 collectively represents all system, peripheral, and chipset buses that support communication among internal devices of the computer system 6500.
  • the bus 6505 communicatively connects the processor 6510 with the read-only memory 6520, the system memory 6515, and the permanent storage device 6525. From these various memory units, the processor 6510 retrieves instructions to execute and data to process in order to execute the processes of the invention.
  • the read-only-memory (ROM) 6520 stores static data and instructions that are needed by the processor 6510 and other modules of the computer system.
  • the permanent storage device 6525 is a read-and-write memory device. This device is a non-volatile memory unit that stores instruction and data even when the computer system 6500 is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 6525. Other embodiments use a removable storage device (such as a floppy disk or zip® disk, and its corresponding disk drive) as the permanent storage device.
  • the system memory 6515 is a read-and-write memory device.
  • the system memory is a volatile read- and-write memory, such as a random access memory.
  • the system memory stores some of the instructions and data that the processor needs at runtime.
  • the invention's processes are stored in the system memory 6515, the permanent storage device 6525, and/or the read-only memory 6520.
  • the bus 6505 also connects to the input and output devices 6530 and 6535.
  • the input devices enable the user to communicate information and select commands to the computer system.
  • the input devices 6530 include alphanumeric keyboards and cursor-controllers.
  • the output devices 6535 display images generated by the computer system. For instance, these devices display IC design layouts.
  • bus 6505 also couples computer 6500 to a network 6565 through a network adapter (not shown).
  • the computer can be a part of a network of computers (such as a local area network ("LAN”), a wide area network (“WAN”), or an Intranet) or a network of networks (such as the Internet).
  • LAN local area network
  • WAN wide area network
  • Intranet a network of networks
  • some embodiments define a crown boundary between an LPDR with a Manhattan LPD (e.g., a horizontal direction) and an LPDR with a non-Manhattan LPD (e.g., a 45° diagonal direction) in terms of an angle that is between the Manhattan and non-Manhattan directions (e.g., a 22.5° direction).
  • a Manhattan LPD e.g., a horizontal direction
  • a non-Manhattan LPD e.g., a 45° diagonal direction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

A method for defining routes in a design layout with at least one particular wiring layer that has at least two regions (200, 300) with different local preferred wiring directions (210, 305). The method then uses the differing local preferred wiring directions (205, 215) to define a detailed route on the wiring layer. In some embodiments, the method defines a first route (210) that traverse first (200) and second regions (300) between two layers by using a first via that has a first pad in the second region.

Description

LOCAL PREFERRED DIRECTION ROUTING AND LAYOUT
GENERATION
BACKGROUND OF THE INVENTION An integrated circuit ("IC") is a semiconductor device that includes many electronic components (e.g., transistors, resistors, diodes, etc.). These components are often interconnected to form multiple circuit components (e.g., gates, cells, memory units, arithmetic units, controllers, decoders, etc.) on the IC. An IC also includes multiple layers of metal and/or polysilicon wiring that interconnect its electronic and circuit components. For instance, many ICs are currently fabricated with five metal layers. In theory, the wiring on the metal layers can be all-angle wiring (i.e., the wiring can be in any arbitrary direction). Such all-angle wiring is commonly referred to as Euclidean wiring. In practice, however, each metal layer typically has one global preferred wiring direction, and the preferred direction alternates between successive metal layers. Many ICs use the Manhattan wiring model that specifies alternating layers of horizontal and vertical preferred direction wiring. In this wiring model, the majority of the wires can only make 90° turns. Occasional diagonal jogs are sometimes allowed on the preferred horizontal and vertical layers. Standard routing algorithms heavily penalize these diagonal jogs (i.e. assess proportionally high routing-costs), however, because they violate the design rules of the Manhattan wiring model. Some have recently proposed ICs that use a diagonal wiring model to provide design rules that do not penalize diagonal interconnect lines (wiring). Interconnect lines are considered "diagonal" if they form an angle other than zero or ninety degrees with respect to the layout boundary of the IC. Typically however, diagonal wiring consists of wires deposed at ±45 degrees. Typical Manhattan and diagonal wiring models specify one preferred direction for each wiring layer. Design difficulties arise when routing along a layer's preferred direction because of obstacles on these wiring layers. For example, design layouts often contain circuit components, pre-designed circuit blocks, and other obstacles to routing on a layer. Such obstacles may cause regions on a layer to become essentially unusable for routing along the layer's single preferred direction. An example that shows obstacles that cause regions on a design layout to become unusable for routing is illustrated in Figure 1. This figure shows two wiring layers that each have two routing obstacles 115 and 120. One of the layers has a horizontal preferred direction; the other layer has a diagonal preferred direction. The obstacles 115 and 120 cause two regions 105 and 110 to become unusable for routing on both of these layers. Therefore, both the Manhattan and diagonal wiring models typically waste routing resources on the layers of a design layout. Accordingly, there is a need in the art for a wiring model that allows Manhattan and diagonal wiring and recaptures the routing resources lost because of obstacles on a wiring layer. More generally, there is a need for a route planning method that maximizes the routing resources on each particular layer.
SUMMARY OF THE INVENTION Some embodiments of the invention provide a method for defining routes in a design layout. The method defines at least one particular wiring layer that has at least two regions with different local preferred wiring directions. The method then uses the differing local preferred wiring directions to define a detailed route on the wiring layer. In some embodiments, the method defines a routing graph for specifying routes. The routing graph has at least two graph regions corresponding to two layout regions on the particular layer of the design layout. The two graph regions overlap to account for the transition in the direction of the wiring between the two graph regions. The method then uses the two graph regions to define routes. In some embodiments, the method defines a routing graph that has first and second routing planes for the particular layer. The first routing plane specifies wiring tracks along the first local preferred wiring direction, while the second routing plane specifies wiring tracks along the second local preferred wiring direction. The method then uses the two planes to define detailed routes. In some embodiments, the method defines a first route that traverse first and second regions between two layers by using a first via that has a first pad in the second region. The method also defines a second route that traverses the second region and a third region in the two layers by using a second via that has a second pad in the second region, where the first and second pads have different shapes. BRIEF DESCRIPTION OF THE DRAWINGS The novel features of the invention are set forth in the appended claims. However, for purpose of explanation, several embodiments of the invention are set forth in the following figures. Figure 1 illustraes an example that shows obstacles that cause regions on a design layout to become unusable for routing is illustrated in. Figure 2 illustrates an example of a design layout with several differently shaped local preferred direction (LPD) regions according to some embodiments of the invention. Figure 3 illustrates another example of a wiring layer with several differently shaped LPD regions (LPDRs) according to some embodiments of the invention.
Figures 4A and 4B provide examples that illustrate the advantage of LPD wiring model in allowing routing resources normally lost due to obstacles on a wiring layer to be recovered..
Figure 5 illustrates an example of such a joining model of some embodiments. Figure 6 illustrates another example of a joining model. Figures 7 and 8 illustrate examples of regions that are between macros or between macros and the layout boundary and that would benefit from LPD wiring. Figure 9 illustrates an auto-LPDR generation process that is used by some embodiments to generate LPDRs in a layout. Figure 10 illustrates an example of a decomposition operation on a layer with a horizontal global preferred direction. Figure 11 illustrates a 45° LPD for an LPDR that is defined between two macro blocks that are diagonally offset from each other. Figure 12 illustrates the elimination of several candidate LPD regions, which were created in the tessellation illustrated in Figure 10. Figure 13 presents an example of an LPDR that is created on a layer between two macros. Figure 14 illustrates an example of a pin adjustment operation that modifies the shape of an LPDR. Figure 15 illustrates an example that shows the use of the corridor created by the adjustment for a via access to the pin. For this modification, Figure 16 illustrates an example of how some embodiments allow access to the pin through a 45° jog into the modified LPDR, a vertical traversal through this LPDR, and then traversing back in the 45° direction after leaving the LPDR. Figure 17 illustrates another example of the pin adjustment operation. Figures 18-21 illustrate examples of impermeable boundaries between regions on a layer and examples of eliminating such boundaries by reshaping the regions. Figure 22 illustrates an example of a boundary adjustment operation. Figures 23-25 illustrate examples extensions of LPDRs. Figure 26 illustrates a process that the LPDR generator of some embodiments uses to create LPDRs between power via arrays on diagonal wiring layers. Figure 27 illustrates an example of creating LPDRs about power structures. Figure 28 illustrates the merging of the two LPDRs and to define a new LPDR. Figure 29 illustrates an example of an alternative embodiment of the invention. Figures 30-32 illustrate small sections of congestion and length grids. Figures 33-41 illustrate several examples of planar edges within the routing grids. Figure 42 illustrates an example of the planar congestion edges that are used to measure congestion along a layer for the example illustrated in Figure 41. Figure 43 illustrates a process that conceptually represents the overall flow of the router in some embodiments of the invention. Figure 44 illustrates a path search that starts at a node and ends at a node. Figure 45 illustrates several examples of edge regions. Figure 46 illustrates two capacity tiles used in some embodiments of the invention. Figure 47A and 47B illustrate examples of pixelating a capacity tile into numerous tiles with pixels at their centers. Figure 48 presents an example that illustrates how some embodiments define the pixel pitch and the track pitch. Figure 49 presents an example that illustrates that a diagonal movement from a first pixel to a second pixel require not only that the second pixel be free but also requires the two pixels that neighbor both the first and second pixels to be free. Figures 50-56 illustrate examples that illustrate how some embodiments define the capacity of edges for defining routes. Figure 57 illustrates four possible routing grids used by some embodiments of the invention. Figure 58 illustrates an example of three vias. Figures 59A-59D present an example that illustrates how the extension of the tracks in the LPDRs facilitates switching between different tracks in different LPDRs. Figure 60 illustrates an example of using multiple routing grids for the wiring layer of Figure 59A. Figure 61 illustrate how some embodiments combine the multiple grid concept illustrated in Figure 60 with the extension concept illustrated in Figure 59A-59D. Figure 62 illustrates an example of using different via pad shapes between different regions of two wiring layers in a layout. Figure 63 illustrates the overall flow of a router that uses the above-described three techniques. Figure 64 illustrates a process that the routing process of Figure 63 performs to identify and asses a path expansion. Figure 65 conceptually illustrates a computer system with which some embodiment of the invention are implemented.
DETAILED DESCRIPTION OF THE INVENTION In the following description, numerous details are set forth for purpose of explanation. However, one of ordinary skill in the art will realize that the mvention may be practiced without the use of these specific details. In other instances, well-known structures and devices are shown in block diagram form in order not to obscure the description of the invention with unnecessary detail. Some embodiments of the invention provide one or more Electronic Design Automation (EDA) tools that use a Local Preferred Direction (LPD) wiring model. An LPD wiring model allows at least one wiring layer to have several different local preferred directions in several different regions of the wiring layer. Several features of LPD design will be discussed below. Section I provides examples of LPD wiring models of some embodiments of the invention. Section II then describes how some embodiments define regions with different LPDs on the same wiring layer. Section III then describes global routers that use the LPD wiring model, while section IV describes detailed routers that use the LPD wiring model. I. LPD OVERVIEW A. Definitions Several embodiments of the invention provide a router that routes a set of nets in a region of an integrated circuit ("IC") layout. Each routed net includes a set of routable elements in the IC-layout region. The routable elements are pins in the embodiments described below, although they might be other elements in other embodiments. The routes defined by some embodiments have "diagonal" edges. In some embodiments, a diagonal edge typically forms an angle other than 0° or 90° with respect to the layout's Cartesian coordinate axes, which are often parallel with the layout's boundary and/or the boundary of the layout's expected IC. On the other hand, a horizontal or vertical edge typically forms an angle of 0° or 90° with respect to one of the coordinate axes of the layout. The horizontal and vertical directions are referred to as the Manhattan directions. Given a design layout with routing layers, some embodiments describe the wiring model of a layout in terms of (1) several wiring layers, (2) a global preferred direction DL for each layer L, and (3) a potentially-empty set of LPDs for each wiring layer L. Some embodiments define a "preferred" direction as the direction that a majority of the wires are laid out in a region. Some embodiments further quantify this amount in terms of percentages or amount of the wiring. For example, some embodiments define the preferred direction of a layer as the direction for at least 50% of the wires (also called interconnect lines or route segments) on the layer. Other embodiments define the preferred direction of a layer as the direction for at least 1000 wires on the layer. Some embodiments of the invention use a five-layer wiring model that specifies the following global preferred directions: horizontal wiring on wiring layer 1, vertical wiring on wiring layer 2, horizontal wiring on wiring layer 3, +45° diagonal wiring on wiring layer 4,
and -45° diagonal wiring (also referred to as 135° or D 135 wiring) on wiring layer 5. One of ordinary skill will realize that other embodiments specify the global wiring directions differently or use a different number of wiring layers. On a particular layer, a region is called an LPD region (or an LPDR) when the region has a local preferred wiring direction that is different than the global preferred wiring direction of the particular layer. In addition to the global preferred direction DL, some embodiments define for each wiring layer L (1) at least 4 pitch values for use whenever a global or local preferred direction can be 0°, 45°, 90°, 135°; and (2) a possibly empty set of data tuples that represent regions on the layer that might have a local preferred direction that differs from the global preferred direction DL of the layer. The pitch values describe the track pitch along a global or local preferred direction. In some embodiments, pitch values may change from layer to layer. Also, in some embodiments, each region's particular tuple t includes an "octangle" O that represents the shape of the particular region, and a direction d that represents the local preferred direction (i.e., 0°, 45°, 90°, 135°) of the particular region. Some embodiments allow a region's LPD dt
to be the same direction as the global one. An octangle in some embodiments is a data structure that is useful for design layouts
that have items with horizontal, vertical, and/or ±45° directions. Specifically, in these
embodiments, an octangle represents a convex geometric shape in terms of eight values, XLO,
VLO> SLO, tLo, XHI, VHI> SHI, and t - These eight values define eight half-planes in two coordinate systems, where one coordinate system is a Manhattan coordinate system that is formed by an x-axis and a y-axis, and the other coordinate system is a 45°-rotated coordinate
system that is formed by an s-axis and a t-axis. The s-axis is at a 45° counterclockwise
rotation from the x-axis, while the t-axis is at a 135° counterclockwise rotation from the x- axis. In the layouts of some embodiments, horizontal lines are aligned with the x-axis, vertical lines are aligned with the y-axis, 45° diagonal lines are aligned with the s-axis, and -
45° diagonal lines are aligned with the t-axis.
Octangles are further described in U.S. Patent Application 10/443,595 entitled
"Method and Apparatus for Representing Items in a Design Layout," which published as U.S.
Published Patent Application 2004-0225983 Al. This patent application is incorporated herein by reference. In the description below, both the wiring and non-wiring geometries of the design layout are convex shapes, or can be decomposed into convex shapes, that have horizontal, vertical, and ±45° sides. One of ordinary skill will realize, however, that some
embodiments might use the octangle data structure in cases where the wiring or non-wiring geometries are more restricted. Some embodiments impose several consistency requirements on an LPD description. For instance, some embodiments require each LPD region to be entirely within the chip area. Also, in some embodiments, different LPD regions on a given layer can abut only at their boundary. In addition, in some embodiments, all LPD regions are non-degenerate, i.e. they contain at least one interior point. Careless definition of LPDs can lead to curious consequences like a separated island on a plane that allows almost no wiring to enter or leave. Since EDA tools typically provide no intelligence about the intention or suitability of such a description, some embodiments of the invention implement an additional plausibility analysis as a separate checking stage that can be called from a Graphical User Interface (GUI) or a text-based interface (such as the Python Interface) in an initial planning stage. A macro block is a complex pre-designed circuit block that is used in a layout. Examples of such blocks include IP Blocks, RAM cells, etc. A. Examples An example of a design layout with several differently shaped LPD regions according to some embodiments of the invention is illustrated in Figure 2. This example shows a wiring layer 200 having a 45° global preferred direction, an octagonal region 205 having a -
45° local preferred direction, an octagonal region 210 having a horizontal (0°) local preferred
direction, and a rectangular region 215 having a vertical (90°) local preferred direction. Figure 3 illustrates another example of a wiring layer with several differently shaped LPD regions according to some embodiments of the invention. This example shows a wiring layer 300 having a 90° global preferred direction. The layer 300 has four LPD regions having different shapes and different local preferred directions. In the center of the layer 300 is an octagonal LPD region 305 having a -45° local preferred direction. Adjacent to the lower-left
side of region 305 is a rectangular LPD region 310 having a 45° local preferred direction. Adjacent to the upper-left side of region 305 is a hexagonal LPD region 315 having a 60°
local preferred direction. Adjacent to the right side of region 305 is a square LPD region 320 having a horizontal (0°) local preferred direction. This example illustrates the flexibility of
the LPD wiring model when designing a wiring layer with different shaped LPD regions having different local preferred directions.
The examples illustrated in Figures 2 and 3 present simple cases of the LPD wiring model in a design layout. However, these examples do not illustrate any macros or other obstacles to the wiring on a layer. One of the advantages of the LPD wiring model is that it allows routing resources normally lost due to obstacles on a wiring layer to be recovered. Figures 4A and 4B provide examples that illustrate this advantage.
Specifically, Figure 4A illustrates a wiring layer 400 having a diagonal global preferred direction. This wiring layer includes a column of power via arrays 405, an IP Block 410, a set of memory cells 415, and two pins 420 and 425. Figure 4A also illustrates dotted lines that represent examples of diagonal wiring on the layer. The power stripe 405, IP Block 410, and the set of memory cells 415 are all obstacles to wiring on the wiring layer. For instance, as shown in Figure 4A, a problem arises when pins 420 and 425 need to be connected to each other or to other pins, as the diagonal wiring that connects to pin 420 is obstructed by the power via arrays 405 while the diagonal wiring that connects to pin 425 is obstructed by the IP block 410.
In order to solve these routing problems, some embodiments define LPDRs about these obstacles with the LPDs of these regions different than the global preferred direction of the layer. Figure 4B illustrates examples of such LPDRs. Specifically, this figure illustrates LPDRs 440 that are defined between the power via arrays and that have a horizontal (0°)
LPD. Instead of defining an LPDR between each pair of the adjacent power via arrays, some embodiments define just one LPDR (with a horizontal LPD) that covers all the aligned power via arrays. This LPDR will have certain regions (i.e., the regions where the power via arrays exist) blocked for routing. These embodiments define only one LPDR in order to optimize the runtime processing of the LPDRs, as each LPDR takes up memory and computational resources.
Figure 4B also illustrates LPD regions 435 that are between the RAM blocks 415 and that have a vertical (90°) LPD. In addition, an LPD region 430 having a vertical (90°) local preferred direction is defined between the right side of the IP Block 410 and the right boundary of the wiring layer, while an LPD region 445 having a horizontal (0°) local preferred direction is defined between the top side of the IP Block 410 and the top boundary of the wiring layer. The boundary between LPDR 430 and LPDR 445 is defined as a 45° diagonal line in order to increase the capacity of the wiring between two such regions. Defining such boundaries and the advantages of such boundaries will be further described below.
The LPD regions illustrated in Figure 4B allow wiring that was previously obstructed to now traverse around the obstacles by routing through these LPD regions along their LPDs. For instance, as shown in Figure 4B, pins 420 and 425 can now be connected through a set of interconnect lines that traverse along the global 45° direction, traverse through the LPDR 440 in the horizontal direction, traverse again along the global 45° direction, and then traverse through the LPDR 445 in the horizontal direction.
A. Joining Routes At LPD Borders A common issue to address in LPD routing is how to join together route segments that traverse two different regions with two different LPDs on the same layer. Some embodiments of the invention join route segments together along a region that is neither parallel nor perpendicular to either route segment. Figure 5 illustrates an example of such a joining model of some embodiments. In this figure, horizontal tracks 505 are located in a region with a horizontal local preferred direction, while vertical tracks 510 are located in a region with a vertical local preferred direction. As shown in Figure 5, horizontal and vertical tracks are joined together along a diagonal region 520, which is a diagonal line in this example. Figure 6 illustrates another example of such a joining model. In this figure, +45°
tracks 605 are located in a region with a +45° local direction, while -45° tracks 610 are located in a region with a -45° local direction. As shown in Figure 6, 45° and -45° tracks are joined together along a vertical region 620, which is a vertical line in the example. Some embodiments manifest such joining models in terms of boundaries between the regions, as further described below in Section II. A. Pitch Some embodiments allow each LPDR to have its own set of pitch values. Other embodiments define a different pitch for each possible routing direction of each wiring layer. For instance, some embodiments define at least four (4) pitch values for each wiring layer, with one pitch value for each standard direction (horizontal, vertical, 45°, and 135°). In some embodiments, the distance between each track in each LPD region is set according to the pitch value corresponding to the routing direction in that region. In some embodiments, the distance between any two parallel tracks is an integer multiple of the pitch, even when the two parallel tracks are in different LPDRs. Offset is the coordinate at the center of a routing track (e.g., it is the x-coordinate for vertical tracks). The offset of the tracks can be defined for each LPD or can remain undefined to be later determined by the detailed router. In either case, the track offsets are defined globally for each wiring direction on a layer. Thus, in some embodiments, there is a common offset for all parallel tracks within all LPD regions within a particular layer. Pitches and offsets may vary from layer to layer. If the pitch for a particular region is left undefined, its value is estimated by applications (e.g., global and detailed routers). Some embodiments perform this estimation based on common utility functions that are dependent on minimum size net class and width/spacing of this net class. For example, if just one pitch is defined for a Manhattan direction X, the pitch for the other Manhattan direction Y is automatically estimated with the same value by all applications. The same applies for both diagonal directions. This means that if just the X-pitch is defined, the Y-pitch is defaulted to the same value as X-pitch. In some embodiments, the two diagonal pitches are derived from technology design rules, e.g., from the minimum spacing and width of the typical nets.
I. LPD REGION GENERATION Some embodiments of the invention include an LPDR generator that designates regions on one or more layers as LPD regions. In some embodiments, the LPDR generator automatically detects LPDR candidates and designates some of these candidates as LPD regions. In some of these embodiments, the LPDR generator also provides the designer with a graphical user interface that allows the designer to specify LPD regions and to modify the attributes (e.g., boundaries and LPDs) of these regions. In other embodiments, the LPDR generator does not perform any automatic detection and designation of LPDRs, but instead only provides the designer with a GUI that allows the designer to specify and modify LPDRs. Also, some embodiments allow a user to define and manipulate LPDRs and LPDs through text-based interfaces, such as a Python Interface. The auto-detection and generation of LPDRs is first described below. This discussion is then followed by a discussion of the GUI of the LPDR generator of some embodiments of the invention. A. Auto LPDR Generator The auto-LPDR generator is intended to make use of LPDRs to increase the routing resources without forcing the user to understand and create LPDRs. As discussed above, LPD creation targets regions the lack routing resources along the global preferred wiring direction of the layer. Such regions typically exist in the alleys between closely placed macros and/or between a macro and the layout's boundary. Also, such regions can be defined between power via arrays used to distribute power in the layout. Sub-section 1 below first describes defining LPDRs based on macros, and then sub-section 2 describes defining LPDRs between power via arrays. It should be noted that some embodiments first define LPDRs between the power via arrays, and then define LPDRs based on macros. Alternatively, some embodiments define these LPDRs together. 1. Macros Figures 7 and 8 illustrate examples of regions that are between macros or between macros and the layout boundary and that would benefit from LPD wiring. Specifically, Figure 7 illustrates two macro blocks 715 and 720 on a layer with a horizontal global preferred direction. As shown in this figure, the region 705 between the two macros and the region 710 between the macro 715 and the layer boundary provide small amounts of routing space, which are not particularly useful given the horizontal global preferred direction of the wiring on the layer. Figure 8 illustrates a region 805 between a macro 810 and the boundary of a layer with a 45° diagonal wiring. Like the regions 705 and 710 of Figure 7, the regions
805 provides a small amount of routing space that is not particularly useful given the 45° global preferred direction of the wiring on the layer. Hence, to make use of regions 705, 710, and 805, the preferred wiring directions of these regions should be specified differently from the global preferred wiring direction of their layer. Figure 9 illustrates an auto-LPDR generation process 900 that is used by some embodiments to generate LPDRs in a layout. This process: (1) identifies candidate regions, (2) designates some or all of the candidate regions as LPDRs, (3) adjusts the LPDRs for pin access, and (4) modifies LPDRs to improve routability between LPDRs and between LPDRs and non-LPDR regions on a layer. This process is described in terms of several examples that relate to LPDR generation on layers with Manhattan global preferred directions. As shown in Figure 9, the process 900 starts by selecting (at 905) a layout layer. The process then decomposes (at 910) the layout layer into several regions. In some embodiments, the process decomposes the selected layout layer by projecting rays from the corner vertices of the outline of the macro blocks on the selected layer. The outlines of the macro blocks might have been defined prior to 910 or they might be defined at 910 based on the shape and structure of the content of the macro blocks. The projected rays are in the direction of the global preferred wiring direction of the selected layer. Figure 10 illustrates an example of a decomposition operation on a layer with a horizontal global preferred direction. In this example, the layer has six macros 1005. Rays are projected from the vertices of these six macros in the horizontal global preferred direction. These projections define thirteen candidate LPD regions 1010. After 910, the process then selects (at 915) one of the contiguous regions created through the decomposition. It then determines (at 920) whether it should designate the selected region as an LPDR for a particular local preferred direction. In some embodiment, the process makes this determination by applying a set of geometric criteria. The criteria are meant to ensure that the designation of the selected region as an LPDR does not remove routing resources from a layer, that usable resources are created by the local preferred direction of the LPDR, and that sufficient additional resources get created in order to justify the extra runtime and/or memory cost of including an LPDR. In some embodiments, the criteria for defining LPDRs on a layer with a horizontal global preferred direction is:
Max ≥ Width of Region > ΨUm, and • Length of Region > LMin, where the width of the region is in the horizontal direction, the length of the region is in the vertical direction, WMEK and WMΪΠ are upper and lower limits on the width of the region, and LMin is a lower limit on the length of the region. The lower limit on region width ensures that the amount of additional vertical or diagonal resource is worth the cost of LPDRs. The upper limit on region width ensures that significant horizontal resources are not lost. Finally, the lower limit on the region's length ensures that the region is not too short, as vertical or diagonal tracks that are smaller than some length might not be of any significant use. This way the additional vertical or diagonal routes will have significant movement along the vertical or diagonal direction. In some embodiments, the criteria for defining LPDRs on a layer with a vertical global preferred direction is: • LMBX ≥ Length of Region > LMin, and • Width of Region ≥ WMΪΠ-
Again, the width of the region is in the horizontal direction, the length of the region is in the vertical direction, LM∑IX and LMUI are upper and lower limits on the length of the region, and WMUI is a lower limit on the width of the region. The lower limit on region length ensures that the amount of additional horizontal or diagonal resource is worth the cost of LPDRs. The upper limit on region length ensures that significant vertical resources do not get lost. Finally, the lower limit on the region's width ensures that the region is not too thin, as horizontal or diagonal tracks that are smaller than some length might not be of any significant use. This way the additional horizontal or diagonal routes will have significant movement along the horizontal or diagonal direction. Some embodiments define the criteria for defining LPDRs on a layer with diagonal global preferred directions similarly. If the process determines (at 920) that the selected region is not a good candidate for an LPDR, the process transitions to 930, which will be described below. On the other hand, when the process determines (at 920) that the selected region is a good LPDR candidate, it transitions to 925, where it designates the selected region as an LPDR. At 925, the process also designates the LPD of the selected region. For a layer that has a Manhattan global preferred direction, some embodiments define the LPD of a designated LPDR on that layer as the Manhattan direction that is orthogonal to the layer's Manhattan global preferred direction. On a layer that has a diagonal global preferred direction, some embodiments define the LPD of a designated LPDR on that layer as one of the Manhattan directions. This Manhattan direction might be a direction that is identified by the dimensional attributes (e.g., orientation) of the LPDR. For instance, when the LPDR is a tall and narrow rectangle aligned with the y-axis, the LPD direction might be designated as the vertical direction. Alternatively, some embodiments define the LPD of an LPDR on any layer based on the dimensional attributes of the LPDR. Also, some embodiments define the LPD of an LPDR that is defined between two or more macro blocks based on the positional relationship of the macro blocks. For instance, Figure 11 illustrates a 45° LPD for an LPDR 1105 that is defined between two macro blocks 1110 and 1115 that are diagonally offset from each other, because it facilitated routing between the open areas 1120 and 1125 to reduce the impact of the macroblocks. Figure 12 illustrates the elimination of several candidate LPD regions, which were created in the tessellation illustrated in Figure 10, for failing to satisfy the above-described width and length criteria. In this example, the remaining LPDRs (i.e., the LPDRs illustrated in this figure) all have been assigned a vertical LPD. After 925, the process transitions to 930. At 930, the process determines whether it has examined all the contiguous regions created on the selected layer by the decomposition operation at 910. If not, the process selects (at 915) another contiguous region, determines (at 920) whether this region should be designated as an LPDR, and (3) in case of an affirmative determination at 920, designates (at 925) the selected region as an LPDR. When the process determines (at 930) that it has examined all the contiguous regions created on the selected layer by the decomposition operation at 910, the process examines (at 935) each particular region that it designated (at 925) as an LPD region to determine whether it needs to adjust or eliminate this region based on pins at the boundaries of the particular region. The newly created LPDRs should not hinder pin access. Hence, the process 900 needs to ensure that the LPDRs provide a safe distance for access to the pins. Accordingly, for each particular LPDR defined at 925, the process initially determines (at 935) whether there is at least one pin on one side of the particular LPDR that needs to connect to another pin on another side of the LPDR. If so, the process discards the LPDR in some embodiments, as the LPDR would block the easiest way to connect the two pins. Figure 13 presents an example of an LPDR 1305 that is created on a layer between two macros 1310 and 1315. On the two sides of the LPDR 1305, the two macros have two pins 1320 and 1325 that need to connect. Hence, as shown in Figure 13, the pin adjustment operation at 935 removes the LPDR 1305 from the layout. Instead of discarding (at 935) an LPDR, the process 900 in some embodiments tries to modify (at 935) the shape of the LPDR (e.g., tries to make the LPDR narrower or shorter as further described below) when it determines that there is one pin on one side of the particular LPDR that needs to connect to another pin on another side of the LPDR. If the modification fails to lead to an acceptable solution, the process then discards the LPDR in some embodiments. The process 900 also identifies (at 935) each LPDR defined at 925 that has one or more pins on its sides even when the pins do not need to connect across the LPDR. For each such LPDR, the process (1) changes the shape of the LPDR to create one or more open corridors for pin access, and (2) then determines whether the modified LPDR still satisfies the above-mentioned criteria for creating the LPDR. If the modified LPDR no longer satisfies one or more of the criteria (e.g., the modified LPDR's width is smaller than the required minimum width), the process discards the LPDR. Otherwise, the process keeps the LPDR with its modified shape. Figure 14 illustrates an example of a pin adjustment operation that modifies the shape of an LPDR. Specifically, this figure presents an example of an LPDR 1405 that is created on a layer between two macros 1410 and 1415. On one side of the LPDR 1405, the macro 1410 has a pin 1420 that needs to be connected. Hence, as shown in Figure 14, the pin adjustment operation at 935 makes the LPDR 1405 narrower (i.e., reduces its width). Modifying the shape of an LPDR provides sufficient routing flexibility for accessing the pins. This leeway can be used by routes to either via out of the layer (the way they would have done without LPDRs) or to jog into the LPDR and blend into the flow. For the LPDR modification illustrated in Figure 14, Figure 15 illustrates an example that shows the use of the corridor 1405 created by the adjustment for a via access to the pin. For this modification, Figure 16 illustrates an example of how some embodiments allow access to the pin through a 45° jog 1610 into the modified LPDR 1405, a vertical traversal through this LPDR, and then
traversing back in the 45° direction after leaving the LPDR. Given that jog 1610 is not along a the LPD of the region 1405, some embodiments assess this jog a penalty for traversing a portion of this region along its non-preferred direction. The amount that a dimension of the LPDR is adjusted is dependent on the number of pins on the side or sides of the LPDR that are associated with that dimension. For instance, some embodiments deduct the following distance D from each side of an LPDR region: D = Max (SMin, PMax* pitch * Cpin) where PMa is the number of pins along the edges of the LPDR, pitch is the wiring pitch along the global preferred direction, Cpin is a pin routing cost that is a heuristic parameter that quantifies the cost of a number of tracks that have to be left aside per pin, and SMJΠ is the minimum spacing requirement for pin access, which is defined by the design rules. Some embodiments drop the min-spacing requirement from the above formula in order to simplify it as follows: D = PMax * pitch * Cpjn Some embodiments might use different rules for performing pin adjustments on layers with diagonal global preferred directions than on layers with Manhattan global preferred directions. For instance, some embodiments may choose to maintain the diagonal direction in a vertically/horizontally shaped region and hence may discard an LPDR when there is a pin at the boundary of the LPDR. Figure 17 illustrates another example of the pin adjustment operation. This example is a continuation of the examples illustrated in Figures 10 and 12. The top layout illustration in Figure 17 presents several pins on the sides of the macros 1005. Next, the bottom left layout illustration in Figure 17 shows the elimination of LPDR 1010. This LPDR was eliminated because two pins 1705 and 1710 on its sides need to be connected to each other. The bottom left layout also illustrates the narrowing of LPDRs 1015 and 1020 to create corridors for accessing pins on the side of these two LPDRs. Finally, the bottom right layout in Figure 17 illustrates the elimination of the narrowed LPDR 1015 for failing to satisfy the minimum width criteria for a vertical LPDR. After performing the pin adjustment operation at 935, the process performs a boundary adjustment operation at 940. In some embodiments, the routability between two regions is dependent on their routing directions and the orientation of the edge separating the two regions. Specifically, when one of the wiring directions between two regions on a layer is parallel to a boundary between the two regions, then some embodiments define the capacity at the boundary between two regions as zero. Such a boundary is referred to as an impermeable boundary between the two wiring directions. To avoid such impermeable boundaries, the process 900 performs the boundary adjustment operation at 940 that changes the boundary between two regions to eliminate any impermeable boundaries between them. Figures 18-20 illustrate examples of impermeable boundaries between regions on a layer and examples of eliminating such boundaries by reshaping the regions. Specifically, Figure 18 illustrates a layer with a horizontal global preferred wiring direction and a LPDR 1805 between two macros 1810 and 1815. As shown in this figure, the LPDR 1805 has a vertical LPD. The LPDR 1805 also has horizontal top and bottom sides 1820 and 1825 that are parallel to the horizontal global preferred wiring direction of the layer. Accordingly, some embodiments define the wireflow capacity across the top and bottom sides 1820 and 1825 as zero (i.e., define these sides as impermeable sides). Such a wireflow definition is a conservative definition as a detailed router might allow non-preferred direction jogs at such boundaries. The permeability at the boundary of the LPDR 1805 and the region with the global preferred wiring direction can be improved by modifying the shape of this boundary. For instance, Figure 19 illustrates the addition of triangular crown regions 1905 and 1910 to the top and bottom sides of the LPDR 1805. Each triangular crown extension of the LPDR 1805 includes a 45° edge and a vertical edge. In some embodiments, the 45° edge is a permeable edge for routes to enter and exist the LPDR, while the vertical edge is an impermeable edge as it is parallel to the vertical LPD of the LPDR 1805. Figure 19 illustrates an example of a route 1920 that traverses through the LPDR 1805 through its permeable edges. Figure 20 illustrates the additions of alternative triangular crown regions 2005 and 2010 to the top and bottom sides of the LPDR 1805. Each of these triangular crown extensions of the LPDR 1805 includes two 45° edges, both of which are in some
embodiments, permeable edges. Figure 21 illustrates two routes 2105 and 2110 that enter the LPDR 1805 through these permeable edges. However, as shown in Figure 21, the route 2105 includes a non-preferred direction jog in the LPDR 1805. Hence, the added advantage of the two extra permeable edges that are provided by the crown extensions 2005 and 2010 come at the expense of requiring some routes to have non-preferred direction jogs in the LPDR. LPDR crown extensions provide well-defined bending points for the routes. These well-defined points are only as strict as the layer direction itself. Accordingly, in some embodiments, the same kind of jogs that can run orthogonal to a routing direction can also violate the bending points in case the benefit offsets a higher price of a non-preferred- direction jog. Some embodiments use the following approach to modify an impermeable boundary of an LPDR on a Manhattan layer. The impermeable boundary of the LPDR abuts two edges of the LPDR that abut the boundary edges of the layer or of macros on the layer. Each of these two edges is checked to determine whether it can be extended. This involves checking the bounds of the macro's edge next to it. The end-point of the edge is termed extendible if the edge can be elongated at that end-point without extending beyond the macro's edge. The amount, by which the edge needs to extend for stretching up to the obstruction edge, is the ExtendLimit. The extendibility and the ExtendLimit are determined at four points, which are two endpoints of both the edges. The following description provides an example of the stretching logic that is performed to stretch a vertically shaped LPDR. When the LPDR can be extended at both its left top corner and right top corner, then the process discards the LPDR as there was some error in its creation. Alternatively, when the LPDR can be extended at its left top corner but not its right top corner, then the process stretches the LPDR's left edge upwards by the minimum of the LPDR width and a maximum top stretch limit. If the LPDR's left edge cannot be stretched by this minimum amount, then the LPDR is discarded in some embodiments. When the LPDR can be extended at its right top corner but not its left top corner, then the process stretches the LPDR's right edge upwards by the minimum of the LPDR width or a maximum top stretch limit. If the LPDR's right edge cannot be stretched by this minimum amount, then the LPDR is discarded in some embodiments. When the left and right top corners of the LPDR cannot be extended, then the process connects the left edge and the right edge by a 45° edge and a 135° edge respectively. The 45° and 135° edges should not exceed the top stretch limit. If truncated, a horizontal line should connect the 45° and 135° edges. Stretching the bottom boundary of a vertical LPDR or the right and left sides of a horizontal LPDR follows an analogous set of operations for the bottom, right, and left sides of an LPDR. Figure 22 illustrates another example of the boundary adjustment operation. This example is a continuation of the examples illustrated in Figures 10, 12, and 17. This figure illustrates the creation of crown extensions for each of the LPDRs with vertical LPDs. Crown extensions 2205, 2210, and 2215 are triangular extensions extended from one side of the LPDR, while crown extensions 2220, 2225, and 2230 are triangular extensions extended from both sides of the LPDR. Extensions 2235 and 2240 are four sided extensions that resulted because of the boundary of the layer or because of the minimum spacing requirement for pin access. Some embodiments might use different rules for performing boundary adjustments on layers with diagonal global preferred directions than on layers with Manhattan global preferred directions. An LPDR, with a Manhattan LPD and a Manhattan outline on a layer with diagonal global preferred wiring, is always permeable itself. However, the LPDRs created around it can deteriorate its permeability/routability. Accordingly, for each macro on a diagonal layer that has LPDRs on two consecutive sides, some embodiments extend the two LPDRs to join them at the corner vertex where the sides meet. The modus operandi of this extension is to extend the Manhattan bound of region-end-point to a large value, and constrain the region with a diagonal bound. The bound is stretched diagonally outward from the vertex of the two consecutive sides. Figure 23 illustrates an example of such an extension. Specifically, this figure illustrates expanding two LPDRs 2305 and 2310 that abut a macro 2315 to improve the routability between these LPDRs and the rest of the layer. Such a solution might lead to odd boundaries between the LPDRs, such as the contact between LPDRs 2405 and 2410 that are illustrated in Figure 24. This contact creates an impermeable edge 2415 between the LPDR 2410 and the rest of the layer as it is parallel to the global preferred wiring direction of the layer. Such an impermeable edge is created because the height of LPDR 2405 is smaller than the width of LPDR 2410. In such cases, the two LPDRs might not be extended at all, might be extended as shown in Figure 24 but then corrected during a manual LPDR creation by a designer, or might be extended in a manner that results in the pentagonal shape for LPDR 2510 that is illustrated in Figure 25. In extending LPDRs, the boundary adjustment operation at 940 might lead to the LPDRs overlapping other LPDRs. So, after the boundary adjusting operation at 940, the process 900 checks (at 945) all LPDRs on the selected layer to make sure that no two LPDRs overlap. When it identifies two LPDRs that overlap, it deletes (at 945) one of them (e.g., the smaller LPDR) in the region of the overlaps. After 945, the process determines (at 950) whether it has examined all the wiring layers. If not, the process returns to 905 to select another wiring layer and then performs the subsequent operations to potentially define one or more LPDs on this layer. When the process determines (at 950) that it has examined all the wiring layers that it needs to examine, the process ends. 2. Power Via Arrays Power structures often reduce the routing resources that are available on the wiring layers. Power via arrays are one example of such power structures. A power via array includes a set of vias that are used to route power from power lines (also called power stripes) on the topmost metal layers down into the lower metal layers. These power stripes require Manhattan directed wiring to access the set of vias in the power array. Accordingly, as discussed above, problems in routing arise when trying to route wiring on a diagonal layer with Manhattan power stripes. As further described above, some embodiments solve this problem by defining LPDRs with Manhattan LPDs for horizontally or vertically aligned power via arrays. Figure 26 illustrates a process 2600 that the LPDR generator of some embodiments uses to create LPDRs between power via arrays on diagonal wiring layers. This process creates LPDRs starting from the top-most diagonal layer and moves down until it finishes with all the diagonal layers. In a layer, the process considers all the power stripes in some embodiments, while considering only power stripes greater than a configurable threshold size (e.g., 100 micron) in other embodiments. The process ignores all diagonal power stripes. For each Manhattan power stripe that is greater than the threshold size, the process creates an LPDR with the same outline as the stripe. The LPD of the LPDR will be horizontal for a vertically shaped LPDR, and vertical for a horizontally shaped LPDR. For each potential LPDR, the capacity will be calculated for the Gcells containing the LPDR (with and without the LPDR). If the LPDR increases the capacity at least two-fold, the LPDR is added to the database. Otherwise, the LPDR will be discarded. As shown in Figure 26, the process 2600 identifies (at 2605) the number of routing layers and the diagonal layers with no power stripes. The process 2600 then iterates (at 2610) through the power and ground nets in the netclass database to identify each Manhattan power stripe that is on a layer above the lowest diagonal layer and that is larger than a particular configurable threshold size. In some embodiments, the threshold size of the Manhattan power stripe is 100 microns, although this size can be redefined by a designer. Each Manhattan power stripe identified at 2610 might be used to define an LPDR on one or more diagonal wiring layers below it, as further described below. To identify power vias, some embodiments might represent an entire power via-stack that includes multiple cuts as one via. Next, at 2615, the process defines the CurrentJ ayer as the topmost diagonal layer. It then selects (at 2620) the nearest layer that is above the CurrentJLayer and that has Manhattan power stripes. The process then determines (at 2625) whether the selected layer above the CurrentJLayer has a sufficient number of (e.g., ten) Manhattan power stripes. The number of power stripes that are sufficient is configurable in some embodiments. If the process determines that the selected layer does not have a sufficient number of Manhattan power stripes, the process transitions to 2640, which will be described below. Otherwise, the process evaluates (at 2630) the outline of each particular Manhattan stripe as a potential LPDR on the CurrentJLayer. Specifically, for each potential LPDR that can be defined based on each particular Manhattan stripe, the process performs (at 2630) two capacity computations for the set of Gcells that contain the potential LPDR. One capacity computation is the total capacity of all the Gcells in the set without the potential LPDR, while the other one is the total capacity of these Gcells with the potential LPDR. The capacity calculation is performed with power/ground vias taken as obstructions. When the potential LPDR fails to increase the capacity of the set of Gcells at least two-fold, the process does not define an LPDR. Alternatively, on the CurrentJLayer, the process defines (at 2630) an LPDR based on the outline of the particular Manhattan power stripe when the potential LPDR increases the capacity of the set of Gcells at least two-fold. Figure 27 illustrates an example of creating LPDRs about power structures. Specifically, this figure illustrates a wiring layer that has a diagonal global preferred direction. This layer also has a region 2705 that is underneath a vertical power stripe. Hence, as shown in Figure 27, the region 2705 can be defined as an LPDR that has a horizontal LPD. This LPD, in turn, provides horizontal routing and/or tracks that allows diagonal routing and/or tracks to pass through this region while avoiding the power-via obstacles that are defined for the vertical power stripe. After 2630, the process 2600 examines (at 2635) any LPDRs that it just created at 2630 to determine whether to merge adjacent LPDRs. Defining LPDRs for adjacent power stripes might create unusable channels between the LPDRs. Figure 28 illustrates two LPDRs 2810 and 2820 that are defined for two different power stripes. In this example, the LPD in each LPDR is horizontal and the global preferred wiring direction of the layer is 45° diagonal. As shown in this figure, the wiring that leaves the LPDR 2810 that is defined for one power stripe can run into a power via stack 2815 in the LPDR 2820 of the other power strip. Figure 28 illustrates the merging of the two LPDRs 2810 and 2820 to define a new LPDR 2830. The "merged" LPD region 2830 is defined to encompass the region of both power stripes and has the same local preferred direction as the LPD of the replaced LPDRs 2810 and 2820. This merging allows the wiring to traverse efficiently across the region underneath the power stripes without the obstruction that existed when the two LPDRs 2810 and 2820 were separate. Some embodiment merge power-stripe LPDRs that are closer than 10% of the stripe- width. Some embodiments perform the merging after the capacity-increase-based LPDR filtering because they assume that a region that does not gain capacity from a change to its routing direction, will not gain capacity even if merged with another LPDR. Other embodiments, however, might account for the merging while performing the capacity estimation and determining whether to define an LPDR. In some embodiments, the merging operation merges two aligned (e.g., horizontally aligned) LPDRs by extending one LPDR (e.g., the LPDR to the left) towards the other LPDR (e.g., the LPDR to the right). The formula below quantifies the horizontal extension (HExt) of leftside LPDR towards a rightside LPDR: HExt = (HSeparationOfStripe - viaStackOffset) mod interval, where HSeperationOfStripe is the horizontal separation of the power stripes, viaStackOffset is the amount of offset between the via stack in the left stripe and the via stack of the right stripe, and interval is the distance between the two via stacks that are part of the stripe corresponding to the left LPDR. Some embodiments put a ceiling on the extension to make sure that not more than a particular percent of the layer is converted to LPDRs. For example, a Horizontal extension will take place only if the value is less than the stripe's width. A value greater than the ceiling is ignored, as it would not be helpful to draw anything less than the horizontal value. Hence, in such cases, some embodiments do not define the LPDR that would need to surpass the ceiling. A second step after the extensions would be to check whether an LPDR has extended into the next LPDR. If so, the merging operation merges the definition of the two LPDRs, provided that they pass a capacity constraint, which will be described below. The above- described approach assumes that the via-stacks within a stripe are placed at regular intervals, that the interval remains the same for the two stripes being considered, and that power- vias do not lie outside the stripes. Some embodiments incorporate a check for such requirements at the beginning of the merging operation. As mentioned above, the merging operation at 2635 performs another capacity- increase-based filtering. Unaligned vias can cause the failure of capacity increase. In case of a failure, the process in some embodiments discards the merged LPDR. Instead of performing a post-processing operation to merge LPDRs for adjacent power stripes, some embodiments might generate larger LPDRs at 2630 that account for the need to have a combined LPDR for adjacent power stripes. After 2635, the process determines (at 2640) whether there is any diagonal layer lower than the Current_Layer. If so, the process selects (at 2645) the next lower layer, designates this layer as the Current_Layer, and transitions back to 2620, which was described above. Otherwise, the process ends. Some embodiments define LPDRs about power structures in view of certain constraints. For instance, some embodiments do not create LPDRs around overlapping power stripes. In some cases, a designer has to manually analyze the LPDRs to ensure that this constraint is met. Also, as mentioned above, the LPDR generator in some embodiments first defines LPDRs about power structures and then defines LPDRs between the macros. Accordingly, the LPDR generator in some embodiments does not check whether the power- based LPDRs overlap any other existing LPDRs. In fact, the LPDR generator might delete all pre-existing LPDRs before creating any power-based LPDRs on a layer. Figure 29 illustrates an example of an alternative embodiment of the invention. This figure illustrates the outlines 2905 of several power stripes on a layer. It also illustrates several LPDRs that are orthogonal to the outline of the power stripes, instead of being defined parallel and in between the stripes. B. Manual LPDR Generation U.S. Patent Application entitled "Local Preferred Direction Architecture, Tools, and Apparatus" filed concurrently with the present application, with the Express Mail Number EV454047165US, and attorney docket number CDN.P0076, describes the GUI of the LPDR generator of some embodiments of the invention. This application is incorporated herein by reference. II. GLOBAL ROUTING Routing is at times performed in two stages, a global routing stage and a detailed routing stage. Global routing provides a general routing plan for nets in a layout. Detailed routing provides the specific routing plan for nets in a layout. In the embodiments described below, the router partitions an IC-layout region into several square sub-regions. For each net being routed, the router then identifies a global route that connects the set of sub-regions that contain at least one pin of the net. Each net's global route is a set of edges (i.e., interconnect lines) that connects the set of sub-regions that contain the net's pins. The identified routes might have horizontal, vertical, and ±45° diagonal
edges in the embodiments described below. These edges are defined within a routing graph (also called a Groute graph) that is first described below. The overall flow of the router is then described, followed by a discussion of the computation of the capacity of edges in the routing graph in view of the local preferred directions of the layout. A. Routing Graph In some embodiments, the router uses two grids to create a Groute graph. The first grid is a coarser grid that divides the IC layout into a number of sub-regions, called Gcells. The second grid is a finer grid that divides each Gcell into four sub-regions. In the
embodiments described below, the Gcells are square. This shape supports ±45° routing, as any set of ±45° wiring tracks that cut through a square Gcell will fill its horizontal and vertical boundaries consistently. One of ordinary skill will realize that other embodiments might use different shaped Gcells. On each wiring layer, each of the four sub-regions in each Gcell is represented by a node at the center of the sub-region. The embodiments described below use the coarser grid to measure route congestion in the layout region, and use the finer grid to measure route lengths. Accordingly, below, the coarser grid is referred to as the congestion grid, while the finer grid is referred to as the length grid. Figures 30 and 31 illustrate small sections of the congestion and length grids. As shown in these figures, intersecting horizontal and vertical lines form both these grids. Figure 30 illustrates a 4x4 section of the congestion grid 3000. This section divides a portion of an IC region into 16 Gcells 3005. In the embodiments described below, the congestion grid divides the IC region into many more Gcells (e.g., tens or hundreds of thousands). Figure 31 illustrates a section of the length grid 3100 that corresponds to the section of the congestion grid 3000 illustrated in Figure 30. As shown in this figure, the length grid divides each Gcell 3005 into four nodes 3105 on each wiring layer. Figure 32 illustrates the four nodes in each Gcell on a particular layer. There are a number of planar and non-planar edges between the nodes defined by the length grid 3100. These edges are referred to as "node edges" in the discussion below. A planar node edge connects two adjacent routing-graph nodes. Each such edge represents a set of wiring tracks along the edge's particular direction that connect the two sub- regions represented by the edge's two nodes. Planar node edges have different directions on different wiring layers. Several examples of planar edges are illustrated in Figures 33-41. The first set of these examples, which are illustrated in Figures 33-36, ignore possible local preferred directions on the wiring layers, in order to simply convey the notion of the planar edge on a layer. The next set of examples, which are presented in Figures 37-41, then provide illustrations of planar edges on layers with more than one preferred direction (e.g., a layer with a global preferred direction and one or more local preferred directions). Ignoring possible local preferred directions, Figures 33-36 illustrate planar edges on layers 2-5 along the global preferred directions of these layers in some embodiments. Some embodiments assume that there are no planar node edges between routing-graph nodes on layer 1, as this layer is often quite congested. Some of these embodiments promote all the pins on layer 1 to layer 2. Other embodiments, however, specify planar node edges on layer 1. In some of these embodiments, the planar node edges on layer 1 are in the same direction as planar node edges on layer 3. Figure 33 illustrates that on layer 2 a vertical node edge 3305 exists between each pair of vertically adjacent nodes in a region on layer 2 that is to be routed according to the vertical global preferred direction of layer 2. Figure 34 illustrates that on layer 3 a horizontal node edge 3405 exists between each pair of horizontally adjacent nodes in a region on layer 3 that is to be routed according to the horizontal global preferred direction of layer 3. Figure 35 illustrates that 45° diagonal node edges exist between northwest nodes 3505 and southeast nodes 3510 of different Gcells in a region on layer 4 that is to be routed according to the 45° diagonal global preferred direction of layer 4. As shown in this figure, no 45° diagonal node edges are incident on northeast nodes 3515 and southwest nodes 3520.
Figure 36 illustrates that -45° diagonal node edges exist between northeast node 3515 and southwest nodes 3520 of different Gcells in a region on layer 5 that is to be routed according to the -45° global preferred direction of layer 5. As shown in this figure, no -45° diagonal node edges are incident on northwest nodes 3505 and southeast nodes 3510. For embodiments that allow local preferred directions on layers 2-5, Figures 37-40 illustrate potential planar edges along potential local preferred directions on layers 2-5. These edges are potential edges as they would only be defined if the nodes that they connect fall within regions that have their local preferred directions coincide with the direction of the edges. For instance, for layer 2, Figure 37 illustrates a potential horizontal node edge 3705 between each pair of horizontally adjacent nodes and a potential -45° edge 3710 between
northeast and southwest nodes of different Gcells on layer 2. The horizontal edges 3705 would only be defined when the nodes that they connect fall within regions on layer 2 that
have a horizontal local preferred direction. Similarly, the -45° edges 3710 are only defined
when the nodes that they connect fall within regions on layer 2 that have a -45° local
preferred direction. For layer 3, Figure 38 illustrates a potential vertical node edge 3805 between each pair of vertically adjacent nodes and a potential 45° edge 3810 between northwest and
southeast nodes of different Gcells on layer 3. For layers 4 and 5, Figures 39 and 40 illustrate a potential vertical node edge 3905 between each pair of vertically adjacent nodes and a potential horizontal node edge 3910 between each pair of horizontally adjacent nodes on layers 4 and 5. As shown in Figures 37-40, some embodiments allow only one diagonal direction on any layer. Some embodiments allow different diagonal directions for planar edges on the same layer, but never on the same Gcell boundary. Figure 41 illustrates an example of a routing graph for layer 3 in a case where layer 3 has a horizontal global preferred direction and two regions 4105 and 4110 that respectively have a -45° and +45° local preferred
directions. This figure illustrates numerous horizontal planar edges 4115 between horizontally adjacent nodes on layer 3 that are not within regions 4105 and 4110. It also illustrates numerous horizontal planar edges 4115 between horizontally adjacent nodes along the boundaries of the regions 4105 and 4110, when the sub-regions represented by these nodes is not entirely within the regions. This figure also illustrates several -45° planar edges 4120 in region 4105, and several 45° planar edges 4125 in region 4110. The directions of these planar edges coincide with the local preferred directions of the two regions 4105 and 4110. In some embodiments, each Manhattan node edge has a unit length cost (L). In these embodiments, each diagonal node edge has a length cost that equals the unit length cost times
the square root of two (L *V2 ). Also, the use of a node edge across a Gcell boundary reduces the capacity of the boundary, and is thereby assessed a wire congestion cost. The router examines wire congestion at Gcell boundaries on each layer available for routing. Specifically, the router computes capacities at Gcell boundaries on each routing layer. On a particular layer, the wiring resources (i.e., wiring tracks) across a Gcell boundary can be conceptually represented as a planar "congestion edge" across that boundary on the particular layer. The capacity of a congestion edge between two Gcells is the wiring capacity for all available wiring directions between the two Gcells. For a boundary between two Gcells that do not fall in a region with a local preferred direction that is different than the layer's global preferred direction, the allowed wiring direction is the global preferred direction. For a boundary between two Gcells that fall within two or more regions with different preferred directions, the allowed wiring directions are the two or more wiring directions in some embodiments. Figure 42 illustrates an example of the planar congestion edges that are used to measure congestion along layer 3 for the example illustrated in Figure 41. As illustrated in Figures 33 and 34, up to two vertical or horizontal planar edges can cross the boundary between each pair of vertically or horizontally adjacent Gcells in some embodiments. In addition, as illustrated in Figures 37-40, a diagonal edge can cross the boundary between two Gcells. Hence, the congestion along two horizontally aligned Gcells can be attributable to obstacles or routes along the two horizontal planar edges and the one diagonal planar edge that cross the boundary between these Gcells. Similarly, the congestion along two vertically aligned Gcells can be attributable to obstacles or routes along the two vertically planar edges and the one diagonal planar edge that crosses the boundary between these Gcells. B. Overall Flow of the Router Figure 43 illustrates a process 4300 that conceptually represents the overall flow of the router in some embodiments of the invention. As shown in this figure, the process 4300 initially uses (at 4305) the congestion and length grids 3000 and 3100 to partition the IC layout region into numerous Gcells, with four nodes on each routing layer in each Gcell. As described above, these Gcells and nodes define a Groute graph in which the router defines and embeds routes. The Groute graph includes a grid for each wiring layer. Next, at 4310, the process selects one of the wiring layers. The process then identifies (at 4315) edges between the nodes of the routing graph for the selected layer, based on the global preferred wiring direction and the local preferred wiring directions (if any) of the selected layer. As described above by reference to Figures 37-40, the routing graph for each layer includes numerous potential horizontal, vertical, and diagonal edges. Hence, at 4315, the process examines each potential edge in the routing graph of the selected layer. The process specifies an actual edge in the selected layer's routing graph for each potential edge that matches a certain set of criteria. This identification process will be further described in Section C below. At 4315, the process also defines the capacity at each Gcell boundary on the selected layer based on the global preferred wiring direction and the local preferred wiring directions (if any) of the selected layer. As mentioned above, on a particular layer, the wiring resources (i.e., wiring tracks) across a Gcell boundary can be conceptually represented as a planar "congestion edge" across that boundary on the particular layer. The capacity of a congestion edge between two Gcells is the wiring capacity for all available wiring directions between the two Gcells. Different embodiments compute the capacity of edges in the global routing graph differently. For instance, some embodiments compute the capacity of edges in the Groute graph that correspond to regions in the layout with multiple different preferred directions based on novel capacity estimation techniques, while computing the capacity of edges in the Groute graph that correspond to regions in the layout with only one preferred direction based on existing capacity estimation techniques. Edge capacity computations will be further described in Section D below. At 4315, the process also computes the via capacity for each Gcell. Different embodiments compute the via capacity differently. In a given Gcell, some embodiments compute the via capacity based on an area-based sampling of open areas within the Gcell. Other embodiments compute the via capacity between two adjacent layers in a Gcell as a user-adjustable constant times the maximum of all capacities of planar congestion edges into the Gcell on either of the layers. After 4315, the process determines (at 4320) whether it has examined each wiring layer. If not, the process returns to 4310 to select another layer, and then performs the edge identification and capacity computations for this layer 4315. When the process determines that it has examined each routing layer, it transitions to 4325. At 4325, the process selects a net for routing. It then specifies (at 4330) source and target sets for performing a path search for the selected net, and then performs a path search at 4335. For the first path search that the process performs to define a route for the selected net, the process often selects a node set that is associated with a particular pin of the net as the target set and specifies the nodes of the nearest K pins (where K can be 1) of the net as the source set. The nodes include any Steiner nodes that might have been defined for the net. For any additional path search that is performed to define the route for the selected net, the process defines (1) the target set as all the nodes that are associated with the routed pins and Steiner points of the net, and all nodes that are currently on the one or more paths embedded for the net during the current route generation, and (2) the source set as all nodes associated with any unrouted pin and Steiner point in the net's configuration that are within a certain distance of the target set. The path search performed at 4335 is an A* path search that at each iteration tries to extend a partial solution with the best estimated cost. Specifically, during its path exploration phase, the process starts its path search by specifying the start of one or more paths from one or more source nodes. It then iteratively identifies one or more path expansions about the lowest cost path, until it identifies a path that connects a source node and a target node. Each identified expansion about a path is from a "current node" (also called "start node") reached by the path being extended to a "destination node" that neighbors the current node. During the path search, the process examines the capacity at a Gcell boundary when it identifies an expansion across such a boundary, in order to ascertain the viability of the expansion. For instance, Figure 44 illustrates a path search that starts at a node 4405 and ends at a node 4410. In reaching node 4410, this path search has explored various expansions. One of the expansions that has been identified is the expansion 4415 from node 4420 to node 4410 across Gcell boundary 4425. When the path search operation identifies this expansion, it determines whether the Gcell boundary 4425 has sufficient available capacity to define another route across this boundary in the direction of the expansion 4415. The available capacity across a Gcell boundary (such as boundary 4425) equals the initial capacity that the global router computed at 4315 minus the estimated number of tracks that it has since defined across that boundary. When the path search operation determines that an identified expansion is crossing an overcongested Gcell boundary, it either discards the expansion as a non- viable expansion or assigns this expansion a high cost. When the path search at 4335 identifies a path between the source and target sets identified at 4330, the process embeds (at 4335) the identified path and then transitions to 4340. At 4340, the process determines whether it has defined a complete route for the net selected at 4325 (i.e., whether it has defined a route that connects all the pins of the net). If not, the process transitions back to 4330 to define new source and target sets for another path search, and then performs this path search to further define the route for the selected net. When the process determines (at 4340) that it has completely defined the route for the selected net, it determines (at 4345) whether it has completed its routing of all the nets. If not, the process transitions back to 4325 to select another net for routing. In some instances, the global routing process 4300 rips up and redefines routes for a particular net one or more times, in order to facilitate the routing of other nets or to improve the routing of the particular net. Also, in some instances, one or more of the path search operations that the routing process performs for a particular net might not identify a path between source and target sets. In these instances, the routing process tries several times to identify such a path, and when it fails, it flags the net as one that it was not able to route. When the process 4300 determines (at 4345) that it has completed its routing of the nets, it terminates. C. Edge Identification As described above by reference to Figures 37-40, the routing graph for each layer includes numerous potential horizontal, vertical, and diagonal edges. At 4315, the global routing process 4300 specifies each potential edge in the routing graph of the selected layer as an actual edge if the potential edge matches a set of criteria. For instance, in some embodiments, the process specifies an actual edge in the selected layer's routing graph for each potential edge that has its direction match the global preferred direction or one of the local preferred directions of the selected layer. A direction of a potential edge matches a preferred direction on the selected layer when the potential edge's direction matches the preferred wiring direction of at least a portion of the sub-region that is represented by a node connected by the potential edge. The above-described Figure 41 illustrates an example of specifying actual edges between the routing graph nodes on layer 3 based on the global preferred horizontal direction and the two local preferred diagonal directions of this layer. Other embodiments, however, define (at 4315) the actual edges in the routing graph differently. For each potential edge, these embodiments initially identify an associated region, called the edge region. These embodiments then determine whether the potential edge should be an actual edge based on the proportion of edge region in which the locally preferred direction matches the potential edge's direction. Figure 45 illustrates several examples of edge regions. Specifically, this figure illustrates a wiring layer that has been divided into a set of Gcells and four quadrants (i.e., four nodes) in each Gcell. The possible edges in some embodiments between such nodes were described above in Figures 37-41. As mentioned above, the potential horizontal (H) edges are between SE-SW and NE-NW quadrants, and the potential vertical (V) edges are between NW-SW and NE-SE quadrants. These potential Manhattan edges come in two flavors: external (between quadrants in different Gcells) and internal (between quadrants in the same Gcell). The potential diagonal edges include 45° (D45) edges between SE-NW quadrants of different Gcells, and -45° (D135) edges between SW-NE quadrants of different Gcells. Figure 45 illustrates examples of six edge regions for six potential edges. These six edge regions are (1) the edge region 4505 that is associated with the internal horizontal edge 4510, (2) the edge region 4515 that is associated with the external horizontal edge 4520, (3) the edge region 4525 that is associated with the internal vertical edge 4530, (4) the edge region 4535 that is associated with the external vertical edge 4540, (5) the edge region 4545 that is associated with the external D45 edge 4550, and (6) the edge region 4555 that is associated with the external D135 edge 4560. For any potential edge of type H, V, D45, or D135 on each layer, some embodiments define f , fv, rws, or fb135, which are the fraction of the area in the edge's associated edge region on that layer at which the preferred direction matches the edge type. Some embodiments use the following rules to determine whether to specify an actual edge for a potential edge, where fu can be either f and fv, fb can be fb 5 or f ι35: • Manhattan edge: o Define an actual edge if the f of an external potential Manhattan edge (i.e., a Manhattan edge that connects two nodes in two different Gcells) is greater than one third. o Define an actual edge if the fM of an internal potential Manhattan edge is greater than zero. • Diagonal edge: o Define an actual edge if the fb of an external potential diagonal edge (i.e., a diagonal edge that connects two nodes in two different Gcells) is greater than one half. Instead of using 1/3, 0, and 1/2 in the above-mentioned rules, other embodiments might use other parameters. In some embodiments, the router allows a designer to adjust these parameters. It should be noted that the potential D45 and D135 edges across any Gcell boundary are associated with the same diamond-shaped stitch region. To avoid generating unresolvable nonplanaraties, some embodiments at most define only one of these diagonal edges at any Gcell boundary. The proposed criterion, fb > 1/2 , ensures only one diagonal edge is defined at any Gcell boundary. If a value less than 1/2 is selected, it would become possible for both edge directions to exceed the threshold, in which case some embodiments define an edge only in the direction with the greater fraction. In the current global routing model, D45 and D135 routes use disjoint sets of quadrants ({SE, NW} and {SW, NE}, respectively). To avoid every route between such regions having to via to another layer and back, some embodiments stitch adjacent quadrants together if they are touched by D45 and D135 stitches. D. Edge Capacity Estimation As mentioned above, some embodiments compute the capacity of edges in the Groute graph that correspond to regions in the layout with only one preferred direction based on existing capacity estimation techniques. U.S. Published Patent Application 2004-0098680 describes some of the existing capacity estimation techniques. These embodiments, however, compute the capacity of edges in the Groute graph that correspond to regions in the layout with multiple different preferred directions based on novel capacity estimation techniques. To define the capacity along a particular edge that crosses a particular Gcell boundary in a particular direction (e.g., a horizontal edge between two Gcells), some embodiments first identify a capacity tile that is associated with the particular edge. In some embodiments, the capacity tile for a particular edge is identical to the edge region that was used to determine whether to define the particular edge. The above-described Figure 45 illustrated several examples of edge regions for different types of external edges (where an external edge is an edge between two Gcells). In other embodiments, however, the capacity tile associated with a particular edge is different than the edge region of the particular edge. For instance, in some embodiments, the capacity tile is a square that is one Gcell wide and that is centered about the Gcell boundary crossed by the particular edge. Two such capacity tiles are illustrated in Figure 46. In these figures, the dark-outline squares depict the Gcells 4605, 4610, 4615, and 4620, and dashed- outline squares represent the capacity tiles 4625 and 4630. The capacity tiles are used for both diagonal and Manhattan directions. In Figure 46, the Gcell boundary between cells 4605 and 4610 is designated as an E- W edge, while the Gcell boundary between cells 4615 and 4620 is designated as a N-S edge. In some embodiments, the possible planar edges along the E-W edge can be horizontal, 45°, and -45° directions, while the possible planar edges along the N-S edge can be vertical, 45°,
and -45° directions. After identifying the capacity tile associated with a particular edge, some embodiments pixelate the capacity tile. The pixelation operation divides the capacity tile into numerous square tiles, and represents each square tile in terms of a pixel located at the tile's center. Figure 47 illustrates an example of pixelating a capacity tile 4700 into numerous tiles with pixels at their centers. As shown in this figure, capacity tile 4700 includes two obstacles 4705 and 4710, and one region 4750 with a 45° local preferred direction. A pixel has three attributes: (1) RoutingJDirection, which can be any of H, V, D45, or D135, (2) blocked, which can be true or false to indicate whether the pixel is free or blocked, and (3) half-blocked, which when set indicates that the pixel is only half blocked (as opposed to full blocked when the blocked field is true). The routing direction of a pixel will be the routing direction at the pixel's location. If the pixel is on the edge/vertex of an LPDR, a precedence order (DO, D90, D45, D135) will determine the direction. One reason to have a well-defined precedence is to remove any dependency on LPDR-ordering or platform. A pixel is flagged as a blocked pixel when a blockage (e.g., an obstacle, pin, or a previously defined route) overlaps some portion of the tile associated with the pixel. However, a pixel will not be designated as a blocked pixel by a mere touch of a blockage, in some embodiments, there must be a non-zero overlap between the pixel's tile and a blockage before the pixel is deemed to be blocked. The distance between the pixels will determine the accuracy of detecting narrow single-track openings. Some embodiments define the pixel pitch equal to the track pitch. When the pixel pitch equals the track pitch, an opening up to 2.0 track-pitches might, depending on alignment with respect to the pixels, get flagged as no-opening, as shown in Figure 48. After pixelating a capacity tile, some embodiments then perform a ray tracing operation to quantify the capacity of the particular edge. Given a starting pixel from a starting set of pixels, a ray can be traced by jumping along the routing-direction to the next pixel, and then using the next pixel's routing-direction for the subsequent move and so on. The ray will end when it reaches an end pixel in an ending set of pixels, or when it reaches a blocked edge or a previously used pixel. If the ray fails to reach an end pixel, the ray will be discarded and all the pixels that the ray used before failing will be freed up for use by a subsequent ray- traversal. The capacity of the edge is then determined based on the number of rays that reach the end set of pixels. Figure 47A illustrates an example of such ray tracing. In this example, the ray tracing is performed from a start pixel in the leftmost pixel column to an end pixel in the rightmost pixel column. Figure 47A presents two sets of pixels as blacked out to illustrate that they are blocked by obstacles 4705 and 4710 in the capacity tile 4700. Also, this figure illustrates a horizontal ray 4720 (at the top of the pixelated tile 4700) that traverses across this tile completely in the horizontal direction. It also illustrates three rays 4730, 4735, and 4740 that traverse across the pixelated tile first in a horizontal direction, then in a 45° direction, and
finally in the horizontal direction. These rays change from between the horizontal and 45° directions twice as they enter and exit the region 4750 that has a 45" local preferred direction.
Finally, Figure 47A illustrates one ray 4745 that never reaches a pixel in the rightmost pixel column. This rays gets blocked at pixel 4755 because this pixel's direction (which is the LPD of the LPDR 4750) would require the ray to use pixel 4760, which was previously used by ray 4720. In some cases, ray tracing might not give the same result if the ray is started from the end point. Figure 47B illustrates an example that is identical to the example illustrated in Figure 47 A, except that in Figure 47B the ray tracing is performed from right to left. As shown in Figure 47B, this ray tracing results in only one ray reaching its destination. However, for LPDRs spanning across many Gcells, such differences in the result of the ray tracing are expected to be a small percentage. Notwithstanding, some embodiments address this difference by performing both ray tracing operations (i.e., by once starting a ray tracing operation from the start points and once starting a ray tracing operation from the end points) and taking the bigger value produce by the two operations. Other embodiments might take the smaller value produced by the two operations. a. Special Consideration for Diagonal Movements Along Pixels A diagonal movement from a first pixel to a second pixel require not only that the second pixel be free but also requires the two pixels that neighbor both the first and second pixels to be free. This is illustrated by the example illustrated in Figure 49. This figure illustrates a move from pixel 4905 to 4910 in the 45° direction. For such a move to be
possible, the pixels 4910, 4915, and 4920 have to be free. Such a move would result in the marking of pixel 4910 as being blocked. It would also result in the marking of pixels 4915 and 4920 as being blocked as the destination of a ray for all directions and as being "half used" for the 45° direction. A half used pixel for a particular diagonal direction is a pixel that cannot serve as tne destination of a ray in the particular diagonal direction but can serve as the neighboring pixel to two pixels that are connected in the 45° direction. Pixel 5005 in Figure 50 is an example of a pixel that has two half uses. Specifically, half of this pixel is used by wire 5010, while the other half of this pixel is used by wire 5015. b. The direction to move along when a change of direction occurs While ray tracing, it might be possible to move in two directions whenever there is a change of direction. For instance, as shown in Figure 51, a horizontally moving ray might reach a pixel that is in a LPDR that has a -45° LPD. In such a case, the next move of the ray
can be in the 135° direction or in the collinear -45° direction. In such circumstances, some embodiments will move in the new direction that is "Forward" to the existing direction. Mathematically this is the direction that will result in a positive number when its dot-product with the previous direction is taken. Alternatively, Table 1 below identifies the direction to select whenever the direction of the previous pixel and the current pixel along the ray differs. Table 1
Figure imgf000048_0001
For orthogonal routing-direction, some embodiments determine the move direction in a way such that two criteria are met. First, to match the behavior of the detailed router, there is no permeability if the orthogonal regions are separated by an edge that is perpendicular (or parallel) to any of the two directions. One such example is illustrated in Figure 52. This figure illustrates a horizontal ray 5205 that terminates when it reaches a LPDR 5210 with a vertical LPD, since the boundary of the LPDR region is orthogonal to the horizontal direction and parallel to the vertical direction. Second, the direction is away from the existing region, so that the move cannot re- enter the region, and then zig-zag along the border. Figure 53 illustrates an example of this criteria. This figure illustrates a horizontal ray 5305 that enters an LPDR region 5310 with a vertical LPD. Here, the LPDRs boundary reached by the ray is neither parallel nor orthogonal to either direction. Hence, the ray 5305 can continue through the LPDR along its LPD. In this example, the ray moves up in the 90° direction instead of down in the -90° direction since
moving down would result in undesirable zig-zag along the LPDR boundary, as shown in Figure 53. The pseudo code that some embodiments follow to implement these two criteria for a ray that is going from a first pixel with a horizontal direction to a second pixel with a vertical direction is as follows: If the pixel below the first pixel has a horizontal direction { move-up //connect-to-top } else if the pixel above the first pixel has a horizontal direction { move down //connect-to-bot } else { do not connect }
For D45-D135 moves, the "diagonal move" criteria is more relaxed at the transition point, as described above. Otherwise the diagonal moves would not be possible. c. Starting Points for the Rays As mentioned above, a ray tracing operation will be performed after pixellating a capacity tile. The starting point of the rays will be dependent on the planar edges that are available across the Gcell boundary associated with the capacity type. Each edge-type will have a corresponding set of start and end-points along the tile boundary. Union of the start-points for all the edges available along the Gcell boundary will be the start points for the entire outline. The end-points will be chosen in a similar fashion. Figure 54 provides an illustration of eight sections Ctnl, Ctn2, Ctsl, Cts2, Ctwl, Ctw2, Ctel, and Cte2 along the boundary of a tile that define eight different sets of pixels that can server as start and end points for different ray tracing operations. (The convention used for naming these eight sections is capacity tile section name: ct<directionChar><num>.) For instance, Table 2 below provides the start and end-points for each ray tracing operation for each edge-type. Table 2
Figure imgf000050_0001
The rays will begin from the pixels along the starting edges. The order of selecting pixels will be anti-clockwise beginning with the ctnl edge. Once a ray is able to reach its end-target, its orientation will be determined based on its two end-points. The ray will be classified by the X-angle (DO, D45, D90 or D135) closest to the orientation. If the stitch to which the ray gets classified is not available, the ray will be discarded and all the pixels will be freed for any subsequent traversal. The capacity along an edge is the total number of rays that successfully traverse from "start" to "end". Figure 55 illustrates the start and end edges for the 45° and 135° directions. As
shown in this figure, the start and end edges are the edges of the locus of the third quadrant (Q3) of the capacity tile moving to the tile's first quadrant (Ql) for 45° edge, and the locus of
tile second quadrant (Q2) moving to the tile's fourth quadrant (Q4) for 135° edge. d. Obstructions Big Manhattan obstructions need special handling in diagonal regions. Otherwise, the capacity that is calculated can allow routes through such obstructions. Hence, in some embodiments, if a Manhattan obstruction intersects a capacity tile that has a planar diagonal edge, the part of the obstruction that overlaps the extended region (and outside the tile) will be projected onto the tile outline. The projection onto the outline will block the corresponding start/end pixels. The projection will verify/check for the pixels along the path being diagonal. If a pixel is not diagonal, the projection ray will stop. Figures 56A and 56B present two examples that illustrate this. In both examples, there is a capacity tile 5605 for a vertical boundary 5610 between two Gcells 5615 and 5620. Also, in both examples, a horizontal aligned obstruction 5625 overlaps the capacity tile 5605 and extends beyond this tile in both directions. Figure 56A illustrates projecting the extension of the obstruction past the tile on the right hand side onto the capacity tile section Cte2 in the -135° direction. Figure 56B illustrates projecting the extension of the obstruction
past the tile on the left hand side onto the capacity tile section Ctw2 in the -45° direction.
These projections shown that the obstruction 5625 completely blocks the pixels on the two sections Cte2 and Ctw2 for the 45° and 135° directions respectively. e. Alternatives Whenever a Manhattan and a diagonal region are separated by a Manhattan-oriented border, the theoretical limit for transition is 70%. The above-described model, models this limit to be 50%. The detailed router might be closer to 70% in transition percentage and hence the above-described model is somewhat conservative. Choosing a pixel-pitch of half the track pitch would achieve the Manhattan-diagonal transition percentage much closer to the theoretical limit (70%). But more processing would be required to achieve the detailed router track behavior (implicit when pixel-pitch is equal to track-pitch). Some embodiments do not do this because of a 4-times increase in ray-tracing work and pixel-memory consumption. Memory consumption could, however, be controlled by not storing directions for pixels. These could be determined during ray-tracing (for the entire Gcell at one-go). For faster runtimes, a bottom up search mechanism for a KD tree could be used. This would significantly increased the implementation time. Also, the above-described model has just one pixel-grid per direction. Other embodiments create a pixel grid for each direction, and define transition zones (around LPD outlines) to move from one grid to another. III. DETAILED ROUTING Some embodiments of the invention provide a detailed router that, based on an LPD wiring model, specifies detailed routes for nets in a layout. The detailed router of some embodiments employs three techniques to facilitate the creation of detailed routes based on an LPD wiring model. These techniques are (1) the extension of the tracks in each LPD region, (2) the use of upto four wiring grids for each wiring layer, and (3) the dynamic selection of via pads based on LPDs. Each of these three techniques is further described below. However, before describing these techniques, certain terms and concepts are first described below. A. Terms and Concepts A detailed router defines detailed routes for nets in an IC layout. Each net includes a set of routable elements in the IC-layout region. The routable elements are pins in the embodiments described below, although they might be other elements in other embodiments. A detailed route has one or more route segments. A route segment is a portion of a detailed route that is along a particular routing direction.
Some embodiments define each route segment in terms of a "line segment" and one "style" for each segment. Each line segment is defined in terms of a start point and an end point. A style specifies eight values that can be used to transform the line-representation of a line segment into a convex polygonal shape that represents the route segment. This complex polygonal shape is the more complete geometric representation of the segment. The eight values of a style include four low values, dxLo, y o, dsLo, dtLo, and four high values, dxπi, dym, dsm, and dtm- The low values are subtracted from the lowest x-, y-, s- and t-values of the line segment's start and end points, in order to obtain the low values of convex polygon (i.e., the route segment) that represents the line segment. On the other hand, the high values are added to the highest x-, y-, s-, and t-values of the line segment's start and end points to obtain the high values of the convex polygon. In this document, the phrase "interconnect line" is synonymous with "route segment," and the two phrases are often used interchangeably.
In some embodiments, a routing graph is a graph that includes at least one routing grid for each wiring layer. Also, in some embodiments, each routing grid has a preferred direction and includes numerous routing tracks that are along its preferred direction. For instance, Figure 57 illustrates four possible routing grids 5705-5720. Each grid includes numerous tracks 5730 that are in the grid's preferred direction. For example, the routing grid 5720 has numerous tracks 5730d that are in this grid's +45° preferred direction. Each track is formed by numerous edges that connect numerous grid points 5735 along the track. The router is said to be a "gridded" router when the grid points in the routing graph (i.e., the grid points in the routing grids) do not include all the grid points of the manufacturing grid, which is the grid used by the IC manufacturing process. On the other hand, the router is said to be "gridless" when its routable states (e.g., its grid points, nodes, lines, surfaces, etc.) are not aligned with any arbitrary routing grid. The routable states of a gridless router are typically aligned with the grid of the manufacturing process (i.e., typically each point on the manufacturing grid is a routable state in one of the routing grids), so that the final layout can be easily manufactured. However, in certain instances, the routable states of gridless routers might not even be aligned with the manufacturing grid. In some cases, the routable states of gridless routers are aligned with a grid that is even finer (i.e., has a higher resolution) than the manufacturing grid. The grid points along the tracks serve as the start, intermediate, termination, and bend points of routes. In a particular grid, a route segment can go from a first grid point on a first track to a second adjacent grid point on a second track (i.e., a route can have a segment that traverses within the grid in a direction that is not the preferred direction of the particular grid), but such a route segment is assessed a cost that is greater than a segment that connects two adjacent grid points along the same track. This differential in costing is what makes the directions illustrated in Figure 57 preferred directions. In other words, the directions of the tracks illustrated in Figure 57 are preferred directions of their grids because routing along these directions is less costly than routing along other directions within these grids. For instance, within the grid 5720 of Figure 57, a route segment that connects two adjacent grid points 5735a and 5735b costs less than a route segment that connects the two adjacent grid points 5735a and 5735c. In some embodiments, a detailed route can traverse multiple layers. Such a route is a multi-layer route. A multi-layer route uses at least one non-planar segment to traverse from one layer to another. This non-planar segment is called a via. In some embodiments, a via includes (1) one pad on each of the two layers that it traverses and (2) a cut that is the three- dimensional hole between the two layers. Figure 58 illustrates three vias, a first via 5805 that is between wiring layers 3 and 4, a second via 5810 that is between wiring layers 4 and 5, and a third via 5860 that is between wiring layers 3 and 4. Via 5805 has pad 5815 on layer 3, pad 5820 on layer 4, and cut 5825 between layers 3 and 4. Via 5810 has pad 5830 on layer 4, pad 5835 on layer 5, and cut 5840 between layers 4 and 5. Via 5860 has pad 5870 on layer 3, pad 5865 on layer 4, and cut 5875 between layers 3 and 4. In some embodiments, the shape of the cut of each via is represented by a polygon. In the example illustrated in Figure 58, polygons 5845, 5850, and 5880 represent the shapes of the vias 5805, 5810, and 5860. B. Extension of LPD Tracks In some embodiments, the detailed router expands the tracks in each LPD region on each layer by a certain amount so that tracks in adjacent LPD regions slightly overlap. This overlap, in turn, allows a detailed route to switch from a first track in a first LPDR with a first particular LPD to a second track in a second LPDR with a second particular LPD. Figures 59A-59D present an example that illustrates how the extension of the tracks in the LPDRs facilitates switching between different tracks in different LPDRs. Specifically, Figure 59A presents a wiring layer 5900 that has three LPDRs 5905, 5910, and 5915, which respectively have vertical, horizontal, and -45° diagonal LPDs. Figure 59B presents three
regions 5920, 5925, and 5930, which are respectively expanded versions of LPDRs 5905, 5910, and 5915. The vertical, horizontal, and -45° diagonal tracks within the LPDRs 5905,
5910, and 5915 extends past these LPDRs into the neighboring regions 5920, 5925, and 5930. Figure 59C presents an example of the horizontal and -45° diagonal wiring tracks
extending into the regions 5925 and 5930. These two regions overlap in a region 5935, which is referred to below as the overlapping region. This overlapping region has two preferred directions, which are the -45° and the 0° directions. As shown Figure 59C, the -45° and 0° wiring tracks intersect each other at a variety of grid points in the overlapping region 5935. These grid points at the intersection of the tracks can then be used to transition from one track along one LPD to another track along another LPD. Specifically, in the region where two LPDRs overlap, a route path can expand along two directions that are the two preferred directions of the two LPDRs. For instance, Figure 59D illustrates a path 5960 that has reached a grid point 5940 in the overlapping region 5935 between LPDRs 5925 and 5930. As shown in this figure, the path 5960 can expand to grid point 5945 along the -45° direction and grid point 5950 along the 0° direction. Both these possible expansions will be along the two preferred directions of the overlapping region. Hence, neither of these expansions will be assessed a non-preferred-direction expansion cost. C. Multiple Grids for Each Wiring Layer with LPDRs To route a set of nets, some embodiments define a routing graph that includes upto four routing grids for each routing layer. These embodiments use upto four routing grids for each particular wiring layer in order to account for the four possible routing directions (i.e., the global preferred routing direction plus the other three local preferred routing directions) on the particular wiring layer. Each routing grid for a layer has some or all of the grid points of the routing graph on the particular layer. The purpose of each particular routing grid for a layer is to define tracks that are available in a particular direction between the routing graph's grid ponts on that layer. Figure 60 illustrates an example of using multiple routing grids for the wiring layer 5900 of Figure 59 A. The wiring layer 5900 has a 45° global preferred direction. This
example shows (1) a first grid 6005 having tracks 6025 along the 45° global preferred
direction of the wiring layer 5900, (2) a second grid 6010 having tracks 6030 along the -45° LPD in the LPDR 5915, (3) a third grid 6015 having tracks 6035 along the horizontal LPD in the LPDR 5910, and (4) a fourth grid 6020 having tracks 6040 along the vertical LPD in the LPDR 5905. Each grid is used to define available routing tracks along a local preferred direction on the particular wiring layer. In each grid, regions that have a different preferred direction than the grid's preferred direction are "blocked-out," i.e., are not available for defining routes along the grid's preferred direction. In some embodiments, a path search operation of the detailed router searches for routing paths between pins and/or previously defined route segments of nets, by exploring path expansions between the grid points of the grids of the routing graph. As further described below, this path search operation assesses a penalty cost for an expansion between two grid points that are not on the same track. This penalty cost is a non-preferred-direction-expansion (NPDE) penalty cost. The path search does not assess such an NPDE penalty cost for an expansion between two grid points that are on the same track. Some embodiments combine the multiple grid concept illustrated in Figure 60 with the extension concept illustrated in Figure 59A-59D. Figure 61 illustrates an example of this combination. Specifically, this figure illustrates the extension 6105 of the -45° tracks 6030 in the second grid 6010, the extension 6110 of the horizontal tracks 6035 in the third grid 6015, the extension 6115 of the vertical tracks 6040 in the fourth grid 6020, and the extension 6120 of the 45° tracks 6025 in the first grid 6005. These extensions of the tracks results in multiple preferred directions being associated with certain grid points at the boundaries of the LPDRs. For instance, the extension of the -45° tracks 6030 allows certain grid points at the boundaries of the LPDRs 5905, 5910, and 5915 to be on two different tracks that are along two different LPDs. Having multiple preferred directions associated with grid points at the boundaries of the LPDRs allows the detailed router's path search operation to explore expansions along multiple preferred directions along the boundaries of the LPDRs, which, in turn, facilitates switching between the multiple preferred directions on a particular layer. D. Vias The detailed routers of some embodiments dynamically define vias in a design layout based on the LPD wiring model of the design layout. Specifically, when defining a via between a first region of a first layer and a second region of a second layer, these embodiments select the shape of the via pads and via cuts based upon the preferred direction of both regions. This dynamic selection of the via-pad and via-cut shapes allows these embodiment to use vias that are optimized for connecting wire segments along different directions. Figure 62 illustrates an example of using different via pad shapes between different regions of two wiring layers in a layout. This example illustrates a perspective view of a multi-layer design layout that has a wiring layer N with a vertical global preferred direction and a wiring layer N+l with a diagonal global preferred direction. A directional-axis indicator 6205 is provided in Figure 62 to identify the wiring directions according to the perspective-view. In Figure 62, layer N has a rectangular shaped LPDR 6235 with a diagonal local preferred direction, while layer N+l has a rectangular shaped LPDR 6205 with a horizontal local preferred direction and an octagonal shaped LPDR 6215 with a vertical local preferred direction. Figure 62 also illustrates three vias between layer N and layer N+l. The first via is defined between the wiring area of layer N and LPDR 6205 on layer N+l . This first via has a square shaped via pad 6240 in the wiring area of layer N and a rectangular via pad 6210 aligned along the vertical axis in LPDR 6205. A second via is defined between LPDR 6235 on layer N and LPDR 6205 on layer N+l. This second via has an octagonal-shaped via pad 6250 in LPDR region 6235 and a rectangular shaped via pad 6220 aligned along the vertical axis in LPDR 6205. A third via is defined between LPDR 6235 on layer N and LPDR 6215 on layer N+l. This third via has an octagonal shaped via pad 6260 in LPDR 6235 and a rectangular shaped via pad 6230 aligned along the horizontal axis in LPDR 6215. E. Route Generation Figure 63 illustrates the overall flow of a router that uses the above-described three techniques, i.e., that extends the tracks in each LPD region, uses upto four wiring grids for each wiring layer, and dynamically selects via pads and via cuts based on LPDs. As shown in this figure, the router initially defines (at 6305) a routing graph for the region being routed. As discussed above by reference to Figure 60, the routing graph in some embodiments includes upto four routing grids for each wiring layer. Also, as further discussed above by reference to Figure 61, the tracks in the routing grids of some embodiments are extended beyond their respective LPDR's to facilitate switching between different preferred directions on a layer. In some embodiments, the routing graph includes cut-plane grids that are used to define vias between pairs of adjacent layers. The use of cut-plane grids is further described in U.S. Patent Application 10/751,332, filed on 01/02/2004. This application is incorporated herein by reference. The process then selects (at 6310) a set of nets for routing. In some embodiments, the selected set of nets are nets that have the same metastyle. A metastyle specifies one style for each layer and one via style for each pair of adjacent layers. After 6310, the process (at 6315) identifies an "unroutable" bloated region about each previously defined geometry (e.g., an obstacle, wire, or via pad) for each potential route segment (i.e., each potential wire segment or via pad) that can neighbor the geometry. For each previously defined via cut that is between two particular layers, the process also defines (at 6315) one bloated region about the cut's geometry for each via cut that can neighbor the previously defined via cut. The process defines the bloated regions at 6315 by using the approaches described in U.S. Paent Application 10/751,332. The defined bloated regions specify unroutable grid points (for different wire directions and via types) in the grids and cut planes of the routing graph. The process next selects (at 6320) a net to route. It then performs (at 6325) one or more path searches to identify a route for the net, where each path search results connects two pins of the net or connects a pin of the net to a previously defined segment of the route. After each successful path search (i.e., each path search that reaches a target grid point from a start grid point), the process in some embodiments performs a back-trace operation that defines a route portion that traces the set of expansions that connected the start and target grid points. The path search and/or embedding operations might in some embodiments rip-up routes defined previously for previously routed nets. When the process rips out a previously defined route for a particular net, the process adds the particular net to the group of nets that it needs to route, and then later re-routes this net. As further described in U.S. Patent Application 10/751,332, each path search uses the bloated regions defined at 6315 and 6330 and/or the unroutable markings defined at 6315 and 6330 to figure out viability of path expansions that it identifies. This viability determination will be further described below. At 6330, the routing process 6300 identifies, if necessary, an "unroutable" bloated region about each geometry or via cut of the route that the process just defined in the last iteration through 6325. The process defines the bloated regions at 6330 based on the approach described in U.S. Patent Application 10/751,332. After 6330, the process determines (at 6335) whether it has examined all the nets in the set selected at 6310. If not, the process returns to 6320 to select another net, and repeats the operations 6325 and 6330 for this net. Otherwise, the process determines (at 6340) whether it has defined routes for all the sets of nets that it needs to route. If not, the process returns to 6310 to select another set of nets to route, and then repeats 6315-6335 for this set of nets. When the process determines (at 6340) that it has examined all the sets of nets, the process terminates. F.. Path Search Each path search explores the grids of the routing graph to identify a path between a set of source points and a set of target points. The routing process 6300 might use one of many different path search techniques (such as line search, maze search, A*, etc.) to identify one set of expansions that connect source and target grid points that are defined for each path search. In identifying a set of expansions that connect source and target grid points for a path search, a path search process typically explores numerous path expansions. A path expansion starts at a particular grid point (called a start point) and goes to a particular grid point (called a destination point). Figure 64 illustrates a process 6400 that the routing process 6300 performs to identify and asses a path expansion. This process (1) identifies a potential expansion, (2) determines the viability of the potential path expansion, and (3) when the expansion is viable, costs the expansion. As shown in Figure 64, the process 6400 initially identifies (at 6405) a potential expansion from a start grid point to a destination grid point. The expansion identified at 6405 can be a planar expansion on a particular layer. This expansion can be along a preferred direction on the particular layer. In other words, the start and destination points of the expansion can lie on the same track. The expansion's start point might lie on multiple tracks when the point is near an LPDR boundary where the tracks have been extended to facillitate switching between the preferred wiring directions. For such a start point, there are multiple expansions that are along preferred directions on the particular layer. The identified planar expansion can also be along a non-preferred direction on the particular layer (i.e., the start and destination points might not lie on the same track). However, as further described below, such an expansion will be assessed a penalty cost. The expansion identified at 6405 can also be a via expansion between two different layers in the layout. For such an expansion, the process uses (at 6405) the directions of the tracks on which the start and destination points exist to select dynamically (1) the shape of the via pads about the start and destination points of the identified expansion, and (2) the shape of the via cut polygon. For instance, the process might identify an octagonal via cuts and octagonal via pads on layers N and N+l when the expansion's start point is on a horizontal track on a layer N while the expansion's destination point is on -45° tracks on
layer N+l. Alternatively, the process might identify square via cut and square via pads on layers N and N+l, when the expansion's start and destination points are on Manhattan wiring tracks on layers N and N+l . Some embodiments store in a data storage the shapes of each via cut and each pair of via pads that can potentially be used to define vias between two layers in a layout. In these embodiments, the particular via cut shape and the particular pair of via pad shapes are defined for a particular pair of preferred directions on the two layers in the layout. The particular pair of directions are the directions of the tracks on the two layers that connect the start and destination points for the expansion. Accordingly, in these embodiments, the shapes of the via cut and the via pads that are to be defined about the start and destination points of the expansion can be retrieved (at 6405) from the data storage based on the direction of the tracks on which the start and destination grid points are defined. The start or destination point of the expansion might lie on tracks when the point is near an LPDR boundary where the tracks have been extended to facillitate switching between the preferred wiring directions. In such a case, multiple pairs of via pad shapes or multiple via cuts might be identified at 6405. In some embodiments, the process 6400 selects (at 6405) one of these pairs of via pad shapes and one of the via cuts by examining all of the available shapes to select the best one. Some of the examined shapes may not be allowed (due to blocked regions) and some of them may lead to different costed paths (due to other DRC rules that restrict the ways the vias attach, the way the paths continue when expanding to or
Figure imgf000063_0001
When the expansion is a via expansion, the process determines (at 6410) whether the via cut that needs to be used for the identified expansion is within the bloated region of a previously specified via cut between the same two layers traversed by the identified expansion. To make this determination, the process determines whether the expansion's cut falls within a bloated region (i.e., whether the expansion's cut encompasses any grid points marked unroutable) in the cut planes for the same two layers traversed by the identified expansion. If the process determines (at 6410) that the cut is within another cuts bloated region, it specifies (at 6415) the expansion as a non-viable expansion, and then ends. Otherwise, the process determines (at 6420) whether the via pad that contains the source or destination point of the identified expansion encompass any point on the pad's layer that is within the bloated region for the pad's type on the pad's layer (e.g., whether the via pad containing the source or destination point of the potential expansion encompasses any point on the pad's layer that has been marked unroutable for the pad's type on the pad's layer). If so, the process specifies (at 6415) the expansion as a non- viable expansion, and then ends. Otherwise, the process specifies (at 6425) the expansion as a viable expansion, computes (at 6430) a cost for this expansion, stores (at 6435) this expansion, and then ends. When the expansion is a planar expansion, the process determines (at 6440) whether the destination point of the potential expansion is within the bloated region for the particular direction on the particular layer (e.g., whether the destination point of the potential expansion has been marked unroutable for the direction of the expansion on the particular layer). If so, the process specifies (at 6415) the expansion as a non- viable expansion and then ends. Otherwise, the process 6400 specifies (at 6425) the expansion as a viable one, computes (at 6430) a cost for this expansion, stores (at 6435) this expansion, and then ends. When a planar expansion is not between two points that are on a track, the expansion cost computed at 6430 includes an NPDE penalty cost. Also, in some embodiments, the process stores (at 6435) the expansions in a storage structure that is sorted according to the costs of the expansions. In this manner, the path search process can easily retrieve the least costly expansions from the storage structure. In some embodiments, the path search process is an A* search process that after retrieving the lowest cost expansion from the storage strucure, (1) determines whether the expansion was to a target grid point, (2) if the expansion was to a target grid point, terminates the search and (3) if the expansion was not to a target grid point, performs the process 6400 one or more times to identify additional path expansions from the retrieved expansion. IV. COMPUTER SYSTEM Figure 65 conceptually illustrates a computer system with which some embodiment of the invention are implemented. Computer system 6500 includes a bus 6505, a processor 6510, a system memory 6515, a read-only memory 6520, a permanent storage device 6525, input devices 6530, and output devices 3035. The bus 6505 collectively represents all system, peripheral, and chipset buses that support communication among internal devices of the computer system 6500. For instance, the bus 6505 communicatively connects the processor 6510 with the read-only memory 6520, the system memory 6515, and the permanent storage device 6525. From these various memory units, the processor 6510 retrieves instructions to execute and data to process in order to execute the processes of the invention. The read-only-memory (ROM) 6520 stores static data and instructions that are needed by the processor 6510 and other modules of the computer system. The permanent storage device 6525, on the other hand, is a read-and-write memory device. This device is a non-volatile memory unit that stores instruction and data even when the computer system 6500 is off. Some embodiments of the invention use a mass-storage device (such as a magnetic or optical disk and its corresponding disk drive) as the permanent storage device 6525. Other embodiments use a removable storage device (such as a floppy disk or zip® disk, and its corresponding disk drive) as the permanent storage device. Like the permanent storage device 6525, the system memory 6515 is a read-and-write memory device. However, unlike storage device 6525, the system memory is a volatile read- and-write memory, such as a random access memory. The system memory stores some of the instructions and data that the processor needs at runtime. In some embodiments, the invention's processes are stored in the system memory 6515, the permanent storage device 6525, and/or the read-only memory 6520. The bus 6505 also connects to the input and output devices 6530 and 6535. The input devices enable the user to communicate information and select commands to the computer system. The input devices 6530 include alphanumeric keyboards and cursor-controllers. The output devices 6535 display images generated by the computer system. For instance, these devices display IC design layouts. The output devices include printers and display devices, such as cathode ray tubes (CRT) or liquid crystal displays (LCD). Finally, as shown in Figure 65, bus 6505 also couples computer 6500 to a network 6565 through a network adapter (not shown). In this manner, the computer can be a part of a network of computers (such as a local area network ("LAN"), a wide area network ("WAN"), or an Intranet) or a network of networks (such as the Internet). Any or all of the components of computer system 6500 may be used in conjunction with the invention. However, one of ordinary skill in the art will appreciate that any other system configuration may also be used in conjunction with the invention. While the invention has been described with reference to numerous specific details, one of ordinary skill in the art will recognize that the invention can be embodied in other specific forms without departing from the spirit of the invention. For instance, some embodiments define a crown boundary between an LPDR with a Manhattan LPD (e.g., a horizontal direction) and an LPDR with a non-Manhattan LPD (e.g., a 45° diagonal direction) in terms of an angle that is between the Manhattan and non-Manhattan directions (e.g., a 22.5° direction). Thus, one of ordinary skill in the art would understand that the invention is not to be limited by the foregoing illustrative details, but rather is to be defined by the appended claims.

Claims

CLAIMS We Claim: 1. A method of routing comprising: a) defining at least one wiring layer that has at least two regions with different local preferred wiring directions; b) using the differing local preferred wiring directions to define a detailed route on the wiring layer.
2. The method of claim 1 , wherein the two regions are a first region with a first local preferred wiring direction, and a second region with a second local preferred wiring direction, wherein the route traverses the first region predominantly along the first local preferred wiring direction and traverses the second region predominantly along the second local preferred wiring direction.
3. For a design layout that has multiple wiring layers, wherein at least one particular layer has at least two layout regions with different local preferred wiring directions, a method of defining routes, the method comprising: a) defining a routing graph for specifying routes, said routing graph having at least two graph regions corresponding to the two layout regions on the particular layer, wherein the two graph regions overlap to account for the transition in the direction of the wiring between the two graph regions; b) using the two graph regions to define routes.
4. The method of claim 3, wherein the routes are detailed routes.
5. The method of claim 4, wherein each particular graph region has a plurality of wiring tracks along the local preferred direction of the layout region corresponding to the particular graph region, and the overlap between the two graph regions facilitates between a transition in a route between wire tracks in the two graph regions.
6. The method of claim 4, wherein using the two graph regions comprises performing a path search that identifies a plurality of path expansions across the two graph regions.
7. The method of claim 6, wherein a plurality of the path expansions in each graph region are along the local preferred direction.
8. The method of claim 7, wherein a plurality of the path expansions in each graph region are not along the local preferred direction, wherein performing the path search comprising: a) computing a first cost for an expansion along a local preferred direction in a particular one of the graph regions; b) computing a second cost for an expansion along a non-local preferred direction in the particular region, wherein the second cost is greater than the first cost.
9. The method of claim 3, wherein the design layout is an IC design layout.
10. For a design layout with multiple wiring layers, wherein at least one particular layer has first layout region with a first local preferred wiring direction and a second layout region with a second local preferred wiring direction different than the first local preferred wiring direction, a method of defining routes, the method comprising: a) defining a routing graph for specifying routes, said routing graph having first and second routing planes for the particular layer, wherein the first routing plane specifies wiring tracks along the first local preferred wiring direction and the second routing plane specifies wiring tracks along the second local preferred wiring direction; b) using the two planes to define detailed routes.
11. The method of claim 10, wherein the first routing plane has a first area that correspond to the first layout region, wherein the first area of the first routing plane has wiring tracks along the first plane's local preferred wiring direction; wherein the second routing plane has a first area that corresponds to the second layout region, wherein the first area of the second routing plane has wiring tracks along the second plane's local preferred wiring direction.
12. The method of claim 10, wherein the first routing plane has a second area that correspond to the second layout region, wherein the second area of the first routing plane does not have wiring tracks; and wherein the second routing plane has a second area that corresponds to the first layout region, wherein the second area of the second routing plane does not have wiring tracks.
13. The method of claim 11 , wherein the particular layer includes a third layout region having a local preferred direction that is the first local preferred wiring direction; wherein the first routing plane has a second area that corresponds to the third layout region, wherein the second area of the first routing plane has wiring tracks along the first plane's local preferred wiring direction.
14. The method of claim 10, wherein using the two routing planes comprises performing a path search that identifies a plurality of path expansions across the two routing planes.
15. The method of claim 14, wherein a plurality of the path expansions in each routing plane are along the local preferred direction of the routing plane.
16. The method of claim 15, wherein a plurality of the path expansions in each routing plane are not along the local preferred direction of the routing plane, wherein performing the path search comprising: a) computing a first cost for an expansion along a local preferred direction in a particular one of the routing planes; b) computing a second cost for an expansion along a non-local preferred direction in the particular routing plane, wherein the second cost is greater than the first cost.
17. The method of claim 10, wherein the particular layer has a plurality of routing states, wherein each routing plane specifies a plurality of wire tracks between a plurality of pairs of routing states along the routing plane's local preferred wiring direction.
18. The method of claim 17, wherein the routing states are points on a grid.
19. The method of claim 18, wherein the design layout is an integrated circuit ("IC") layout, the grid is a grid used to manufacture the IC.
20. The method of claim 18, wherein the design layout is an integrated circuit ("IC") layout, wherein the grid is a grid that is coarser than the manufacturing grid.
21. For a design layout that has a first layer with first and second regions respectively with first and second local preferred wiring directions, and a second layer with a third region with a third local preferred wiring direction, a method of defining routes, the method comprising: a) defining a first route that traverse the first and third regions by using a first via, said first via having a first pad in the third region, b) defining a second route that traverses the second and third regions by using a second via, said second via having a second pad in the third region, wherein the first and second pads have different shapes.
22. The method of claim 21, wherein the first via has a third pad in the first region, and the second via has a fourth pad in the second region.
23. The method of claim 22, wherein the third and fourth pads have the same
shape.
24. The method of claim 22, wherein the third and fourth pads have different shapes.
25. The method of claim 21, wherein defining the first route comprises performing a path search that identifies a plurality of path expansions across the first and third regions, wherein one of the path expansions identifies a via expansion between the first and third regions.
26. The method of claim 25 further comprising: a) after identifying the via expansion, identifying the shape of the via pads on the first and third regions for the via expansion; b) ensuring the first and third regions have sufficient space for the identified via pad shapes at the location of the identified via expansion in the first and third regions.
27. A computer readable medium that stores a computer program that defines routes in a design layout that has multiple wiring layers, wherein at least one particular layer has at least two layout regions with different local preferred wiring directions, the computer program comprising sets of instructions for: a) defining a routing graph for specifying routes, said routing graph having at least two graph regions corresponding to the two layout regions on the particular layer, wherein the two graph regions overlap to account for the transition in the direction of the wiring between the two graph regions; b) using the two graph regions to define routes.
28. The computer readable medium of claim 27, wherein the routes are detailed routes.
29. The computer readable medium of claim 28, wherein each particular graph region has a plurality of wiring tracks along the local preferred direction of the layout region corresponding to the particular graph region, and the overlap between the two graph regions facilitates between a transition in a route between wire tracks in the two graph regions.
30. The computer readable medium of claim 27, wherein the set of instructions for using the two graph regions comprises a set of instructions for performing a path search that identifies a plurality of path expansions across the two graph regions.
31. The method of claim 30, wherein a plurality of the path expansions in each graph region are along the local preferred direction.
32. A computer readable medium that stores a computer program that defines routes in a design layout that has multiple wiring layers, wherein at least one particular layer has first layout region with a first local preferred wiring direction and a second layout region with a second local preferred wiring direction different than the first local preferred wiring direction, the computer program comprising sets of instructions for: a) defining a routing graph for specifying routes, said routing graph having first and second routing planes for the particular layer, wherein the first routing plane specifies wiring tracks along the first local preferred wiring direction and the second routing plane specifies wiring tracks along the second local preferred wiring direction; b) using the two planes to define detailed routes.
33. The computer readable medium of claim 32, wherein the first routing plane has a first area that correspond to the first layout region, wherein the first area of the first routing plane has wiring tracks along the first plane's local preferred wiring direction; wherein the second routing plane has a first area that corresponds to the second layout region, wherein the first area of the second routing plane has wiring tracks along the second plane's local preferred wiring direction.
34. The computer readable medium of claim 32, wherein the first routing plane has a second area that correspond to the second layout region, wherein the second area of the first routing plane does not have wiring
tracks; and wherein the second routing plane has a second area that corresponds to the first layout region, wherein the second area of the second routing plane does not have wiring tracks.
35. The computer readable medium of claim 33 , wherein the particular layer includes a third layout region having a local preferred direction that is the first local preferred wiring direction; wherein the first routing plane has a second area that corresponds to the third layout region, wherein the second area of the first routing plane has wiring tracks along the first plane's local preferred wiring direction.
36. The computer readable medium of claim 32, wherein using the two routing planes comprises performing a path search that identifies a plurality of path expansions across the two routing planes.
37. A computer readable medium that stores a computer program that defines routes in a design layout that has a first layer with first and second regions respectively with first and second local preferred wiring directions, and a second layer with a third region with a third local preferred wiring direction, the computer program comprising sets of instructions for: a) defining a first route that traverse the first and third regions by using a first via, said first via having a first pad in the third region, b) defining a second route that traverses the second and third regions by using a second via, said second via having a second pad in the third region, wherein the first and second pads have different shapes.
38. The computer readable medium of claim 37, wherein the first via has a third pad in the first region, and the second via has a fourth pad in the second region.
39. The computer readable medium of claim 38, wherein the third and fourth pads have the same shape.
40. The computer readable medium of claim 38, wherein the third and fourth pads have different shapes.
PCT/US2005/019359 2004-06-04 2005-06-04 Local preferred direction routing and layout generation WO2005122027A2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
EP05755944A EP1756741A4 (en) 2004-06-04 2005-06-04 Local preferred direction routing and layout generation

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US57743404P 2004-06-04 2004-06-04
US60/577,434 2004-06-04
US11/005,169 US7412682B2 (en) 2004-06-04 2004-12-06 Local preferred direction routing
US11/005,162 US7707537B2 (en) 2004-06-04 2004-12-06 Method and apparatus for generating layout regions with local preferred directions
US11/005,448 US7340711B2 (en) 2004-06-04 2004-12-06 Method and apparatus for local preferred direction routing
US11/005,162 2004-12-06
US11/005,448 2004-12-06
US11/005,169 2004-12-06

Publications (2)

Publication Number Publication Date
WO2005122027A2 true WO2005122027A2 (en) 2005-12-22
WO2005122027A3 WO2005122027A3 (en) 2006-05-04

Family

ID=35503797

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2005/019359 WO2005122027A2 (en) 2004-06-04 2005-06-04 Local preferred direction routing and layout generation

Country Status (2)

Country Link
EP (1) EP1756741A4 (en)
WO (1) WO2005122027A2 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707537B2 (en) 2004-06-04 2010-04-27 Cadence Design Systems, Inc. Method and apparatus for generating layout regions with local preferred directions
US8166442B2 (en) 2000-12-07 2012-04-24 Cadence Design Systems, Inc. Local preferred direction architecture
US10331840B2 (en) 2016-01-15 2019-06-25 International Business Machines Corporation Resource aware method for optimizing wires for slew, slack, or noise

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4571451A (en) * 1984-06-04 1986-02-18 International Business Machines Corporation Method for routing electrical connections and resulting product
JPS63237436A (en) * 1987-03-26 1988-10-03 Toshiba Corp Wiring of semiconductor integrated circuit device
JPH0290368A (en) * 1988-09-28 1990-03-29 Fujitsu Ltd Production for automatic lead-out wiring data on terminal of surface mount device parts
JPH03188650A (en) * 1989-12-18 1991-08-16 Hitachi Ltd Routing method, routing system and semiconductor integrated circuit
US5258920A (en) * 1989-12-26 1993-11-02 General Electric Company Locally orientation specific routing system
US5224022A (en) * 1990-05-15 1993-06-29 Microelectronics And Computer Technology Corporation Reroute strategy for high density substrates
JP2759573B2 (en) * 1992-01-23 1998-05-28 株式会社日立製作所 Circuit board wiring pattern determination method
JPH06196563A (en) * 1992-09-29 1994-07-15 Internatl Business Mach Corp <Ibm> Computable overclowded region wiring to vlsi wiring design
US5798936A (en) * 1996-06-21 1998-08-25 Avant| Corporation Congestion-driven placement method and computer-implemented integrated-circuit design tool
US6516455B1 (en) * 2000-12-06 2003-02-04 Cadence Design Systems, Inc. Partitioning placement method using diagonal cutlines
US7073150B2 (en) * 2000-12-07 2006-07-04 Cadence Design Systems, Inc. Hierarchical routing method and apparatus that use diagonal routes
US6895567B1 (en) * 2001-06-03 2005-05-17 Cadence Design Systems, Inc. Method and arrangement for layout of gridless nonManhattan semiconductor integrated circuit designs
US7216308B2 (en) * 2002-11-18 2007-05-08 Cadence Design Systems, Inc. Method and apparatus for solving an optimization problem in an integrated circuit layout
US7003752B2 (en) * 2002-11-18 2006-02-21 Cadence Design Systems, Inc. Method and apparatus for routing
US7480885B2 (en) * 2002-11-18 2009-01-20 Cadence Design Systems, Inc. Method and apparatus for routing with independent goals on different layers

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of EP1756741A4 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8166442B2 (en) 2000-12-07 2012-04-24 Cadence Design Systems, Inc. Local preferred direction architecture
US7707537B2 (en) 2004-06-04 2010-04-27 Cadence Design Systems, Inc. Method and apparatus for generating layout regions with local preferred directions
US8010929B2 (en) 2004-06-04 2011-08-30 Cadence Design Systems, Inc. Method and apparatus for generating layout regions with local preferred directions
US10331840B2 (en) 2016-01-15 2019-06-25 International Business Machines Corporation Resource aware method for optimizing wires for slew, slack, or noise

Also Published As

Publication number Publication date
EP1756741A4 (en) 2007-09-05
WO2005122027A3 (en) 2006-05-04
EP1756741A2 (en) 2007-02-28

Similar Documents

Publication Publication Date Title
US7340711B2 (en) Method and apparatus for local preferred direction routing
US8010929B2 (en) Method and apparatus for generating layout regions with local preferred directions
US7721243B2 (en) Method and apparatus for routing
US6802049B2 (en) Method and apparatus for computing placement costs by calculating bend values of connection graphs that model interconnect line topologies
US6598206B2 (en) Method and system of modifying integrated circuit power rails
JP2886481B2 (en) How to place objects
US7594214B1 (en) Maximum flow analysis for electronic circuit design
US6957407B2 (en) Method and apparatus for detail routing using obstacle carving around terminals
US6829757B1 (en) Method and apparatus for generating multi-layer routes
US6877146B1 (en) Method and apparatus for routing a set of nets
US7594196B2 (en) Block interstitching using local preferred direction architectures, tools, and apparatus
US8250514B1 (en) Localized routing direction
US7107564B1 (en) Method and apparatus for routing a set of nets
US7412682B2 (en) Local preferred direction routing
US7003752B2 (en) Method and apparatus for routing
US7047513B2 (en) Method and apparatus for searching for a three-dimensional global path
US7174529B1 (en) Acute angle avoidance during routing
US6859916B1 (en) Polygonal vias
US7310793B1 (en) Interconnect lines with non-rectilinear terminations
EP1756741A2 (en) Local preferred direction routing and layout generation
US6988257B2 (en) Method and apparatus for routing
US7080329B1 (en) Method and apparatus for identifying optimized via locations
TW202403585A (en) Integrated circuit with non-preferred direction curvilinear wiring
US6895569B1 (en) IC layout with non-quadrilateral Steiner points
US7069530B1 (en) Method and apparatus for routing groups of paths

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase in:

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2005755944

Country of ref document: EP

WWW Wipo information: withdrawn in national office

Country of ref document: DE

WWP Wipo information: published in national office

Ref document number: 2005755944

Country of ref document: EP