WO2004102339A2 - Removal of acute angles in a design layout - Google Patents

Removal of acute angles in a design layout Download PDF

Info

Publication number
WO2004102339A2
WO2004102339A2 PCT/US2004/014380 US2004014380W WO2004102339A2 WO 2004102339 A2 WO2004102339 A2 WO 2004102339A2 US 2004014380 W US2004014380 W US 2004014380W WO 2004102339 A2 WO2004102339 A2 WO 2004102339A2
Authority
WO
WIPO (PCT)
Prior art keywords
segment
values
segments
item
coordinate
Prior art date
Application number
PCT/US2004/014380
Other languages
French (fr)
Other versions
WO2004102339A3 (en
Inventor
Etienne Jacques
Tom Kronmiller
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 US10/443,811 external-priority patent/US7080339B2/en
Priority claimed from US10/443,315 external-priority patent/US7065731B2/en
Priority claimed from US10/443,595 external-priority patent/US7243328B2/en
Application filed by Cadence Design Systems, Inc filed Critical Cadence Design Systems, Inc
Publication of WO2004102339A2 publication Critical patent/WO2004102339A2/en
Publication of WO2004102339A3 publication Critical patent/WO2004102339A3/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

  • the invention is directed towards removal of acute angles in a design layout.
  • Design engineers design IC's by transforming circuit description of the IC's into
  • layouts To create layouts, design engineers typically use
  • EDA electronic design automation
  • IC integrated circuit
  • EDA tools commonly represent IC components as rectangular objects.
  • the horizontal and vertical interconnects are referred to as
  • EDA tools typically represent a rectangular object in terms of x and y coordinates of
  • the segments of a route are run-length encoded.
  • This encoding specifies a direction and a length for each segment.
  • a direction and a length for each segment In such prior encoding, a
  • segment's direction can be along 0°, 90°, 180°, and 270°. This encoding also specifies an order
  • Each segment's style specifies four values that can be used to transform a line-
  • Figure 1 illustrates an example of constructing the rectangle for a segment from the
  • the method selects a route with several segments. It then
  • segment has an associated shape that fills the acute angle between the first and second
  • Figure 1 illustrates an example of constructing the rectangle for a segment from the
  • Figure 2 illustrates an octangle data structure used in some embodiments of the
  • Figure 3 illustrates two coordinates systems used to define the parameters of the
  • Figure 4 illustrates a -45° diagonal line that can be represented by an equation that is
  • FIGS 5-12 illustrate eight half planes that are defined by the eight parameters of the
  • Figure 13 illustrates examples of the types of shapes that the octangle data structure
  • FIGS 14-22 illustrate how the shapes illustrated in Figure 13 are represented by
  • FIGS 23A and 23B illustrate an example that illustrated why some embodiments
  • Figure 24 illustrates a process that defines an octangle data structure for a design-
  • Figure 25 illustrates a process that defines an octangle data structure for a design-
  • FIGS 26 and 27 illustrate the use of two different styles for the same segment.
  • Figure 28 illustrates a process for constructing the polygonal shape of a wire segment
  • Figure 29 illustrates a data structure and database arrangement that is used in some
  • Figure 30 illustrates two different view of a design layout.
  • Figures 31 and 32 illustrate a process that generates the segment and style
  • Figure 33 illustrates that an acute 45° angle exists at the juncture between a
  • Figure 34 illustrates a process that is performed for each two contiguous segments SI
  • Figure 35 illustrates an example for removing an acute angle.
  • Figure 36 conceptually illustrates a computer system with which some embodiments
  • Figures 37-41 illustrate some alternative data structures and coordinate systems that
  • design layout For instance, some embodiments use a method that represents an item in terms
  • n- values that define n-half planes, which when intersected define the shape of the item.
  • n is a number greater than four.
  • Some embodiments use a method that (1) identifies a first set of location data for the
  • both the first and second set of location data are first and second set of location data. In some embodiments, both the first and second
  • coordinate systems have first and second coordinate axes.
  • the first and second coordinate axes have first and second coordinate axes.
  • first set of location data are the highest and lowest coordinates of the item on the first and
  • Some embodiments use a method that (1) receives a first set of data that defines the
  • the first coordinate system is a
  • the first coordinate system is a non-Manhattan
  • the second coordinate system is a Manhattan coordinate system.
  • geometric shapes have at least two sides that are neither parallel nor orthogonal to each other.
  • each possible side of the shapes is one of the manufacturing directions.
  • manufacturing refers to the process used to manufacture
  • FIGS 2-25 illustrate the data structure and processes of some embodiments.
  • convex shapes or can be decomposed into convex shapes, that can have horizontal, vertical,
  • this data structure might be used when the wiring is only in the Manhattan directions or in the ⁇ 45° directions, or the non- wiring geometries (e.g., pins and
  • shapes can be broken down into convex polygonal shapes.
  • the octangle data structure 205 represents each convex
  • one coordinate system is a
  • Manhattan coordinate system 305 which is formed by an x-axis 310 and y-axis 315.
  • a 45°-rotated coordinate system 320 which is formed by an s-axis
  • the s-axis is at a 45° counterclockwise rotation from the x-axis 310, while
  • the t-axis is at a 135° counterclockwise rotation from the x-axis 310.
  • horizontal lines are aligned with the x-axis
  • vertical lines are aligned with the y-
  • the Manhattan coordinate system is aligned with the
  • some embodiments define the unit length along the s- and t-axes to
  • diagonal coordinate system 320 is selected such that diagonal lines that traverse through
  • integer diagonal coordinates can start and terminate on the manufacturing grid, and can intersect, on the manufacturing grid, the Manhattan lines that traverse through integer
  • Figure 4 illustrates a -45° diagonal line 405 that can be
  • This line 405 intersects the Manhattan coordinate system at (0, 5) and (5,0). As shown in
  • the octangle data structure 205 represents each convex geometric
  • the low values (i.e., x L0 , YL O» S L O5 L o) specify a half-plane to
  • the positive side i.e., the right or top side
  • the positive values i.e., m
  • y HI , S HI , and t H ⁇ specify a half-plane to the negative side (i.e., the left or bottom side) of the
  • each of these figures illustrates its half plane as a set of dashed lines that terminate on a solid line.
  • the intersection of these 8 half-planes defines a convex geometric shape.
  • the eight values x L0 , Y LO , S O , ⁇ LO , ⁇ m, Y H I, s ffl , and t HI define a convex geometric
  • Figure 13 illustrates examples of the types of shapes that the octangle data structure
  • this data structure can represent a single point, a
  • Figures 14-22 illustrate how the shapes illustrated in Figure 13 are represented
  • Figures 14-22 illustrate each half plane by a dashed line that represents the line on
  • polygons regions of interest, routes, etc.
  • the polygon in Figure 16 might be all
  • planes of the octangle data structure are superfluous (i.e., are not necessary to uniquely identify the boundaries of the shape).
  • the half plane t H ⁇ is superfluous in Figure
  • definition is part of the above-mentioned definition of the eight half-plane values LO , YL O ,
  • Figures 23A and 23B illustrate an example of this.
  • Figure 23B illustrates the s H ⁇ for the half plane 2315 to
  • the rectilinear Manhattan bounding box can be quickly identified
  • the 45°-rotated bounding box can be quickly identified by simply taking
  • the octangle data structure 205 can be used to define design-layout items that are in
  • circuits circuits, circuit components (such as devices like transistors, capacitors, etc.), vias, obstacles,
  • design-layout item is defined by two or more octangle data structures, where each octangle
  • data structure represents one of the convex shapes that forms the item.
  • Figure 24 illustrates a process 2400 that defines an octangle data structure for a
  • design-layout item that is initially defined in terms of the x- and y-coordinates of its vertices.
  • the design-layout item can be any item in the layout, such as a cell, a circuit, a circuit
  • the item is defined only in terms of two of its vertices. For instance, in some
  • the item is a rectangle that is initially defined only in terms of x- and y-coordinates of
  • a polygon that is defined in terms of the x- and y-coordinates of each of its vertices.
  • the process 2400 initially defines (at 2405) an octangle data
  • octangle data structure 205 The item's lowest x- and y-values are respectively the smallest x-
  • the process then identifies the highest x- and y-values of the item,
  • the item's highest x- and y-values are respectively the largest x-coordinate and the largest y-coordinate
  • the process then performs (at 2430) a coordinate-transform operation. From the x-
  • operation (at 2430) produces an s- ant t-coordinates for each vertex of the design-layout item.
  • the process produces the s- and t-coordinates for a particular vertex from the x- and y-
  • the process initially identifies (at 2430) the x- and y-
  • the process then identifies the smallest s- and t-values of the
  • process next identifies the largest s- and t-values of the vertices of the item (i.e., the largest s-
  • the process 2400 of Figure 24 can also be used to define an octangle data structure
  • the process 2400 in some embodiments (1) identifies the bounding
  • Figure 25 illustrates a process 2500 that defines an octangle data structure for a
  • design-layout item that is initially defined in terms of the s- and t-coordinates of its vertices.
  • the design-layout item can be any item in the layout, such as a cell, a circuit, a circuit
  • the item is defined only in terms of two of its vertices. For instance, in some
  • the item is a rotated rectangle that is initially defined only in terms of s- and t-
  • the item might be defined in terms of three or more of its vertices.
  • the item might be defined in terms of three or more of its vertices.
  • the item might be a polygon that is defined in terms of the s- and t-coordinates of each of its
  • the process 2500 initially defines (at 2505) an octangle data
  • octangle data structure 205 The item's lowest s- and t-values are respectively the smallest s-
  • the process then identifies the highest s- and t-values of the item.
  • highest s- and t-values are respectively the largest s-coordinate and the largest t-coordinate of
  • the process then performs (at 2530) a coordinate-transform operation. From the s-
  • the process initially identifies (at 2530) the s- and t-coordinates of the other vertices
  • the process then identifies the smallest x- and y-values of the
  • process next identifies the largest x- and y-values of the vertices of the item (i.e., the largest x-
  • the process 2500 of Figure 25 can be used to define an octangle data structure that
  • design-layout items (2) performs (at 2530) coordinate transform operations on all the vertices of all the items in the set, and (3) identifies the polygon's LO , Y LO , X HI and y H ⁇ values
  • layout items that includes (1) a first sub-set of items that are defined in terms of the x- and y-
  • embodiments perform two sets of coordinate transform operations initially to obtain x-, y-, s-
  • each item in the set is expressed in terms of x-, y-, s-, and t-coordinates.
  • some embodiments do not perform the process 2400 or the process
  • these embodiments define the octangle data structure while defining the design-layout item.
  • Each segment is a straight line that connects two
  • Some embodiments run-length encode the segments of a route.
  • Such an encoding specifies each segment in terms of a direction D and a length L.
  • direction can be along any of the 8 available routing directions, which are 0°, 45°, 90°, 135°,
  • This encoding also specifies an order for the segments of the
  • the segments are stored in a 1-
  • the order of the segments is the order that they
  • the run-length encoding of a route also typically specifies at least a starting point for
  • the first segment Si is initially constructed as a segment that starts at the starting
  • the distance d equals the length W, ⁇ of the first segment times square root of 2 (i.e., d
  • Each subsequent segment of the route is then constructed by performing an iterative
  • the operation constructs one segment, referred to as the
  • the current segment Sc terminates at a point that is a distance d c
  • This iterative operation terminates once it has constructed the last segment.
  • some embodiments also define a style for each segment of a
  • a style specifies eight values that can be used to transform a line-representation of a
  • FIGS 26 and 27 illustrate the use of two different styles for the same segment
  • the segment 2600 connects the x,y coordinates (1,3) and (5,7), which map to the s,t
  • Figure 26 illustrates that the subtraction of the style's low values from the corresponding
  • these eight half planes define an octagon 2605.
  • Figure 27 illustrates that the subtraction of the style's low values from the corresponding
  • Figure 28 illustrates a process for constructing the polygonal shape of a wire segment
  • Figure 29 illustrates
  • segment data structure 2905 that stores the length
  • the segment data structure also includes an index 2910 that identifies a record 2920 in a style
  • Each record in the style table 2915 is identifiable by a unique style index 2910.
  • each record specifies a unique set of 8 delta values, dx L o, dy L0 , ds L o, dt L0 , dx H ⁇ , dy m ,
  • the process 2800 initially identifies (at 2805) the x-, y-, s-,
  • segment is the first segment, in which case its start coordinate is the start point of the route.
  • the segment's end point is a point that is a distance d away from the segment's start point in
  • the distance d is the segment's length L when the segment is in a horizontal or vertical direction, or is the segment's length times square root
  • the process then retrieves (at 2810) the delta values (dx o, dy L0 , ds L0 , dt L0 , dx HI ,
  • x-low value x PL0 of the polygon that is to represent the segment by subtracting dx L0 from the
  • the process then computes (at 2835) the x-high value X PH I of the polygon that is to
  • the process next computes (at 2850) the t-high value tr ⁇ i of the polygon by adding dt m to
  • the polygon define the shape of the polygon. Accordingly, these values can be stored in an
  • octangle data structure to represent the polygon.
  • the process 2800 can be used in a variety of different scenarios when it is desirable to
  • this process could be used to generate a display of the routes, to output data to a
  • GDS file to perform extraction, to estimate routing capacity, etc.
  • Figure 30 illustrates two different views of a design layout 3000 that includes three
  • the first view 3020 illustrates each route in terms of a set of line segments that are abutting.
  • the second view 3025 illustrates each route in terms of a set
  • Each of the polygons in the second view corresponds to a
  • particular polygon in the second view can be generated from its corresponding segment by
  • each segment in terms of its length, direction, and style-table index.
  • segment in turn, identifies a set of delta parameters, which when applied to the segment's
  • endpoints specify eight half planes that define the segment's polygonal shape.
  • Figure 31 illustrates a process 3100 that generates the segment and style information
  • An EDA tool performs this process when
  • the tool does not have the style and segment information.
  • a power router might
  • the tool simply generates the needed
  • the process 3100 initially identifies (at 3105) the coordinate
  • Figure 32 illustrates how some embodiments identify this
  • This figure illustrates a polygon 3205 for which segment and style data needs
  • some embodiments identify the Manhattan bounding box 3210 and 45°-rotated bounding box 3215 that enclose the polygon. These bounding
  • polygons can be identified according to the approach described above, which is further
  • the process 3100 determines (at 3105) whether the polygon's width is longer along the x-
  • the process identifies (at 3105) the x-axis as the
  • the process identifies (at 3105) the y-axis as the coordinate axis.
  • the process identifies (at 3105) the s-axis as the coordinate axis.
  • the process identifies (at 3105) the t-axis as the coordinate axis.
  • the t-axis as the coordinate axis.
  • the rotated bounding box 3215 has the smaller area and the polygon's
  • the s-axis is larger than its width along the t-axis. Accordingly, the s-axis is
  • the process also specifies (at 3110) the x-, y-, s-, and t-coordinate values
  • the polygon that are intersected by the defined segment i.e., are intersected by a line that is parallel to the identified coordinate axis and that is half way between the polygon's high and
  • the segment 3220 is identified to be parallel to the s-axis
  • the process then identifies the 8 delta values, dx L0 , dy L0 , ds L0 , dt LO , dx m , dy ffl , ds m ,
  • the process next computes (at 3130) the low delta t-value dt o by
  • the process then computes (at 3135) the high delta x-value dx H ⁇ by subtracting the x-
  • the computed delta values dx L0 , dy L0 , ds L0 , dt L0 , dx H ⁇ , dy H ⁇ , ds ⁇ i, and dt m define a
  • This style can be indexed by a segment data structure (such as structure 2905 of Figure 29) for the segment specified at 3110.
  • the direction of this segment would be one of the two
  • each edge of the route is represented
  • an acute angle is
  • an acute angle is 45°.
  • Figure 34 illustrates a process 3400 that is performed for each two contiguous
  • Two segments are contiguous in a
  • the process 3400 initially determines (at 3405) whether an
  • an acute angle is a 45° angle that is formed at the
  • Some embodiments store whether there is an acute angle between different
  • the process 3400 makes
  • process specifies (at 3415) the length of this segment as 0. From a look-up table that
  • process 3400 then retrieves (at 3420) an index into the style database table 2915 for the pair
  • a segment can be inserted through an insertion function
  • the segment can be inserted in the array by reading out the segments from the
  • the process 3400 would retrieve (at 3420) a
  • style-table index that is stored in the look-up table for the combination of a 0° segment and a
  • the retrieved style index i.e., the retrieved dx 0 , dy L0 , ds L0 , dt L0 , dx H ⁇ , dy m ,
  • Figure 36 conceptually illustrates a computer system with which some embodiments
  • Computer system 3600 includes a bus 3605, a processor
  • the bus 3605 collectively represents all system, peripheral, and chipset buses that
  • the bus 3605 communicatively connects the processor 3610 with the read-only
  • the processor 3610 retrieves instructions to execute
  • ROM 3620 stores static data and instructions that are needed by the processor 3610 and
  • the permanent storage device 3625 on the other
  • This device is a non-volatile memory unit that stores
  • a mass-storage device such as a magnetic or optical disk and its corresponding
  • the system memory is a volatile read-and-write memory, such as a random access memory.
  • the system memory is a volatile read-and-write memory, such as a random access memory.
  • the invention's processes are stored in the system memory 3615, the
  • the bus 3605 also connects to the input and output devices 3630 and 3635.
  • the input devices 3630 include alphanumeric keyboards and cursor-controllers.
  • output devices 3635 display images generated by the computer system. For instance, these
  • the output devices display IC design layouts.
  • the output devices include printers and display devices,
  • CTR cathode ray tubes
  • LCD liquid crystal displays
  • bus 3605 also couples computer 3600 to a
  • the computer can be a part of a network of computers (such as a local area network (“LAN”), a wide area network
  • LAN local area network
  • wide area network a network of computers
  • WAN wide area network
  • Intranet a network of networks
  • Internet a network of networks
  • components of computer system 3600 may be used in conjunction with the invention.
  • embodiments might also include a layer attribute in the octangle data structure 205 of Figure
  • some embodiments define routes according to a hexagonal wiring model
  • some embodiments use a hexangle data structure 3700 that is illustrated in Figure 37.
  • This data structure stores eight values that are defined with respect to a hexagonal coordinate
  • system includes a Manhattan coordinate system and a rotated coordinate system.
  • the coordinate system includes u- and v-axes.
  • the u-axis is at a 60° clockwise rotation from the
  • data structure represents each convex geometric shape in terms of eight values, XL 0 , Y O , U O , V O , X HI , ym, u ⁇ , and V HI - These eight values define eight half planes that bound a design-
  • design-layout items such as pins
  • y-, u-, and v-values are useful in representing routes that have segments parallel
  • the hexagonal wiring model specifies the x-axis as one of the routing
  • the three routing directions are 0°, 60°, and -60°. In these cases, the
  • u- and v-values of the hexangle data structure 3700 would be defined by reference to the
  • some embodiments use a symmetric-
  • system includes two axes, u- and v-axes, that are rotated by 30° with respect to the x-axis
  • u'- and v'-axes that are rotated by 60° with respect to the x-axis.
  • the symmetrical hexangle data structure 4000 represents each convex geometric shape
  • twelve values define twelve half planes that bound a design-layout item in the three sub- coordinate systems of the coordinate system of Figure 41.
  • the twelve values are useful in
  • design-layout items such as pins or routes

Abstract

Some embodiments of the invention provide novel methods for removing acute angles from routes in a design layout (Figure 34). The method selects a route with several segments. It then identifies an acute angle between first and second contiguous segments of the route (Figure 33). The method next inserts a third segment between the first and second segments, where the third segment has an associated shape that fills the acute angle between the first and second segments (Figure 13).

Description

REMOVAL OF ACUTE ANGLES IN A DESIGN LAYOUT
FIELD OF THE INVENTION
The invention is directed towards removal of acute angles in a design layout.
BACKGROUND OF THE INVENTION
Design engineers design IC's by transforming circuit description of the IC's into
geometric descriptions, called layouts. To create layouts, design engineers typically use
electronic design automation ("EDA") applications. These applications provide sets of
computer-based tools for creating, editing, and analyzing IC design layouts. EDA applications
create layouts by using geometric shapes that represent different materials and devices on
IC's. For instance, EDA tools commonly represent IC components as rectangular objects.
They also use rectangles to represent horizontal and vertical interconnections between
rectangular IC components. The horizontal and vertical interconnects are referred to as
Manhattan interconnects or wiring.
EDA tools typically represent a rectangular object in terms of x and y coordinates of
two opposing vertices of the object (i.e., in terms of xL0, y o> and xH yHι). These tools often
represent a non-rectangular object in terms of the x- and y-coordinates of the object's vertices.
Such an approach works well when most of the shapes in the layout are rectangular.
However, certain EDA tools have recently been proposed that support non-
Manhattan wiring. These tools often utilize a large number of non-rectangular shapes. The
traditional approach of specifying a shape in terms of the coordinates of two or more of its
vertices is not efficient for these newer EDA tools. Therefore, there is a need for a novel way
of specifying items in a design layout that has non-rectangular shapes. There is also a need for an efficient way of representing routes with non-Manhattan
edges. One prior technique for representing a Manhattan route specifies the route in terms of
a set of segments and one or more styles. Each segment is a straight line that connects two
points in the design layout. In some cases, the segments of a route are run-length encoded.
This encoding specifies a direction and a length for each segment. In such prior encoding, a
segment's direction can be along 0°, 90°, 180°, and 270°. This encoding also specifies an order
for the segments of the route.
Each segment's style specifies four values that can be used to transform a line-
representation of the segment into a rectangular shape that is a more complete geometric
representation of the segment. These four values include two low delta values, dxLo and dyL0,
and two high delta values, dxHι and dyHι- The low delta values are subtracted from the
segment's lowest x- and y- values xLo, YLO to obtain the low x- and y- values (xReC O> YRecLo) of
rectangle that represents the segment, while the high delta values are added to the segment's
highest x- and y-values Xj-π, ym to obtain the high x- and y-values (xRe_Hi> YRecHi) of the
rectangle. Figure 1 illustrates an example of constructing the rectangle for a segment from the
coordinates and style values of the segment. This prior technique, however, does not support
non-Manhattan routes. Accordingly, there is a need for an efficient representation of routes
that can have non-Manhattan edges.
SUMMARY OF THE INVENTION
Some embodiments of the invention provide novel methods for removing acute angles
from routes in a design layout. The method selects a route with several segments. It then
identifies an acute angle between first and second contiguous segments of the route. The
method next inserts a third segment between the first and second segments, where the third
segment has an associated shape that fills the acute angle between the first and second
segments.
BRIEF DESCRIPTION OF THE DRA INGS
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 illustrates an example of constructing the rectangle for a segment from the
coordinates and style values of the segment.
Figure 2 illustrates an octangle data structure used in some embodiments of the
invention.
Figure 3 illustrates two coordinates systems used to define the parameters of the
octangle data structure.
Figure 4 illustrates a -45° diagonal line that can be represented by an equation that is
defined by reference to one of the coordinate systems illustrated in Figure 3.
Figures 5-12 illustrate eight half planes that are defined by the eight parameters of the
octangle data structure illustrated in Figure 2.
Figure 13 illustrates examples of the types of shapes that the octangle data structure
of Figure 2 can represent.
Figures 14-22 illustrate how the shapes illustrated in Figure 13 are represented by
the eight half-plane values.
Figures 23A and 23B illustrate an example that illustrated why some embodiments
define a superfluous half plane of the octangle data structure to abut one of the vertices of the
geometric shape defined by the octangle data structure.
Figure 24 illustrates a process that defines an octangle data structure for a design-
layout item that is initially defined in terms of the x- and y-coordinates of its vertices. Figure 25 illustrates a process that defines an octangle data structure for a design-
layout item that is initially defined in terms of the s- and t-coordinates of its vertices.
Figures 26 and 27 illustrate the use of two different styles for the same segment.
Figure 28 illustrates a process for constructing the polygonal shape of a wire segment
from its direction, length, and associated style information.
Figure 29 illustrates a data structure and database arrangement that is used in some
embodiments in conjunction with the process of Figure 28.
Figure 30 illustrates two different view of a design layout.
Figures 31 and 32 illustrate a process that generates the segment and style
information from a polygon that represents a route segment.
Figure 33 illustrates that an acute 45° angle exists at the juncture between a
horizontal segment and a +45° or -45° segment, and at the junction between a vertical segment
and a +45° or -45° segment.
Figure 34 illustrates a process that is performed for each two contiguous segments SI
and S2 of a route in order to determine whether there is an acute angle between the two
segments, and if so, to remove the acute angle.
Figure 35 illustrates an example for removing an acute angle.
Figure 36 conceptually illustrates a computer system with which some embodiments
of the invention are implemented.
Figures 37-41 illustrate some alternative data structures and coordinate systems that
are used by some embodiments of the invention. 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 invention 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 novel methods for representing items in a
design layout. For instance, some embodiments use a method that represents an item in terms
of n- values that define n-half planes, which when intersected define the shape of the item. In
some embodiments, n is a number greater than four.
Some embodiments use a method that (1) identifies a first set of location data for the
item with respect to a first coordinate system, (2) identifies a second set of location data for
the item with respect to a second coordinate system, and (3) specifies the item in terms of the
first and second set of location data. In some embodiments, both the first and second
coordinate systems have first and second coordinate axes. In some of these embodiments, the
first set of location data are the highest and lowest coordinates of the item on the first and
second coordinate axes of the first coordinate system, while the second set of location data are
the highest and lowest coordinates of the item on the first and second coordinate axes of the
second coordinate system.
Some embodiments use a method that (1) receives a first set of data that defines the
item with respect to a first coordinate system of the design layout, (2) from the first set of
data, generates a second set of data that defines the item with respect to a second coordinate system of the design layout, and (3) specifies the item in terms of both the first and second
sets of data.
In some of the embodiments mentioned above, the first coordinate system is a
Manhattan coordinate system, while the second coordinate system is a non-Manhattan
coordinate system. In other embodiments, the first coordinate system is a non-Manhattan
coordinate system, while the second coordinate system is a Manhattan coordinate system.
I. OCTANGLE DATA STRUCTURE
Some embodiments of the invention provide novel data structures and processes that
efficiently store convex geometric shapes in a design layout, when at least some convex
geometric shapes have at least two sides that are neither parallel nor orthogonal to each other.
In some embodiments, each possible side of the shapes is one of the manufacturing directions.
As used in this document, the term "manufacturing" refers to the process used to manufacture
an IC from its EDA design. Hence, manufacturing directions are the directions available to the
manufacturing process to produce an IC from an EDA design (e.g., to specify the shapes of
cells, pins, interconnects, etc. from the EDA design).
Figures 2-25 illustrate the data structure and processes of some embodiments. The
data structure illustrated in these figures is referred to below as the octangle data structure, as
it is useful for design layouts that have items with horizontal, vertical, and/or ±45° directions.
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 can 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. For instance, this data structure might be used when the wiring is only in the Manhattan directions or in the ±45° directions, or the non- wiring geometries (e.g., pins and
obstacles) have sides along only in the Manhattan directions or the ±45° directions. The
discussion below focuses on convex polygonal shapes as it assumes that any non-convex
shapes can be broken down into convex polygonal shapes.
As illustrated in Figure 2, the octangle data structure 205 represents each convex
geometric shape in terms of eight values, xL0, Y O, SLO> tL0, HI, YHI> SHI, and tm. These eight
values define eight half plane in two coordinate systems. Before describing how 8-half planes
define a convex geometric shape, the two coordinate systems are briefly described. Figure 3
illustrates the two coordinates systems. As shown in this figure, one coordinate system is a
Manhattan coordinate system 305, which is formed by an x-axis 310 and y-axis 315. The
other coordinate system is a 45°-rotated coordinate system 320, which is formed by an s-axis
325 and t-axis 330. The s-axis is at a 45° counterclockwise rotation from the x-axis 310, while
the t-axis is at a 135° counterclockwise rotation from the x-axis 310. 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.
In some embodiments, the Manhattan coordinate system is aligned with the
manufacturing grid. Also, some embodiments define the unit length along the s- and t-axes to
be times the unit length along the x- and y-axes, so that the diagonal coordinate system is
L
also aligned with manufacturing grid. In other words, the coordinate resolution along the
diagonal coordinate system 320 is selected such that diagonal lines that traverse through
integer diagonal coordinates can start and terminate on the manufacturing grid, and can intersect, on the manufacturing grid, the Manhattan lines that traverse through integer
Manhattan coordinates. For instance, Figure 4 illustrates a -45° diagonal line 405 that can be
represented by the equation,
s=5.
This line 405 intersects the Manhattan coordinate system at (0, 5) and (5,0). As shown in
Figure imgf000010_0001
Figure 4, 5 units along the s-axis is equivalent to 5 * , or 3.54, units along the Manhattan
2
coordinate system. Given that the unit length along the s- and t-axes is
Figure imgf000010_0002
times the unit
length along the x- and y-axes, the following coordinate-transform equations (A) and (B) can
be used to obtain the s- and t-coordinates of any point from the points x- and y-coordinates.
s = x + y, and (A)
t = y - x. (B)
As mentioned above, the octangle data structure 205 represents each convex geometric
shape in terms of 8 values, where each value defines a half plane that is defined in the design
layout by reference to one of the two coordinate systems 305 and 320. Figure 2 identifies
these 8 values as xL0, yLo> sLo, o, XHI> YHI, SHI, and tffl. The values XLO, YLO, SLO, tL0 are the
smallest coordinates of the shape along the x-, y-, s-, and t-axes (i.e., the smallest x-, y-, s-,
and t-axis values of the shape), while xffl, VHI> sHι, and tHι are the largest coordinates of the
shape along the x-, y-, s-, and t-axes (i.e., the largest x-, y-, s-, and t-axis values of the shape).
As illustrated in Figures 5-12, the low values (i.e., xL0, YL SLO5 Lo) specify a half-plane to
the positive side (i.e., the right or top side) of the value, while the positive values (i.e., m,
yHI, SHI, and tHι) specify a half-plane to the negative side (i.e., the left or bottom side) of the
value. (Each of these figures illustrates its half plane as a set of dashed lines that terminate on a solid line.) The intersection of these 8 half-planes defines a convex geometric shape.
Specifically, the eight values xL0, YLO, S O, ^LO, χm, YHI, sffl, and tHI define a convex geometric
shape S(x,y) where: fΞSft2
Figure imgf000011_0001
YLO ≤ Y ≤ YHI,
sL0 ≤ s ≤ SHI,
LO t ≤ tm,
s = x + y, and
t = y - x.
Figure 13 illustrates examples of the types of shapes that the octangle data structure
205 can represent. As shown in this figure, this data structure can represent a single point, a
line, or any convex polygon that has anywhere from three to eight sides in 8 possible
directions. Figures 14-22 illustrate how the shapes illustrated in Figure 13 are represented
by the 8 half-plane values 0, YLO, SLO, t 0, XHI, YHI, sm, and tm. (To simplify these
drawings, Figures 14-22 illustrate each half plane by a dashed line that represents the line on
which the half plane terminates.) The polygonal shapes illustrated in Figures 13-22 can
represent any number of items in the design layout. These items include cells, circuits, circuit
components (such as devices like transistors, capacitors, etc.), obstacles, vias, pins, bounding
polygons, regions of interest, routes, etc. For instance, the polygon in Figure 16 might be all
or a portion of a cell, a circuit, a circuit component, an obstacle, a pin, a via, a bounding
polygon, a region of interest, or a route, etc.
When a convex geometric shape has less than eight sides, one or more of the eight half
planes of the octangle data structure are superfluous (i.e., are not necessary to uniquely identify the boundaries of the shape). For instance, the half plane tHι is superfluous in Figure
15, the half planes tm and s o are superfluous in Figure 16, the half planes tm, tLo, and sLo
are superfluous in Figure 17, and so on. When one of the eight half planes is superfluous, it
is canonically defined to abut one of the vertices of the geometric shape. This canonical
definition is part of the above-mentioned definition of the eight half-plane values LO, YLO,
SLO, tLo, XHI, YHI, SHI, and tffl. As mentioned above, the values xL0, yLo, sLo, tLo are defined as
the smallest coordinates of the shape along the x-, y-, s-, and t-axes (i.e., the smallest x-, y-, s-
, and t-axis values of the shape), while xHι, YHI, SHI, and tHι are defined as the largest
coordinates of the shape along the x-, y-, s-, and t-axes (i.e., the largest x-, y-, s-, and t-axis
values of the shape).
Some embodiments define a superfluous half plane to abut one of the vertices of the
geometric shape in order to ensure that future calculations that are performed on the shape
provide accurate results. Figures 23A and 23B illustrate an example of this. These figures
present the vertex 2305 of a geometric shape 2310 and a superfluous half plane 2315 that is
defined by the sHι parameter. In Figure 23 A, the sm for the half plane 2315 correctly abuts
the vertex 2305. Hence, as shown in Figure 23 A, an expansion operation that expands the
sides of the geometric shape 2310 by a particular factor, results in a new geometric shape
2320 that correctly has a -45° side (due to the expansion of the half plane 2315) on its upper
right hand corner. Figure 23B, on the other hand, illustrates the sHι for the half plane 2315 to
be incorrectly positioned away from the vertex 2305. Consequently, an expansion operation
on this representation incorrectly results in a new geometric shape 2325 that still has a 90°
juncture at the upper left corner of the new geometric shape 2325. Expansion operations are
further described in U.S. Patent Application entitled "Method and Apparatus for Representing Items in a Design Layout" filed 5/21/03, having serial number 10/443,595, and
having a docket number CDN.P0062. This non-provisional application is incorporated herein
by reference and is referred to below in several instances as the "above-incorporated non-
provisional application."
Another advantage of defining a superfluous half plane to abut one of the vertices of
the geometric shape is that this definition simplifies the identification of bounding polygons
and the computation of their widths. As further described in the above-incorporated non-
provisional patent application, the octangle data structure allows EDA tools to quickly
identify the octilinear bounding polygon for a set of items in the design layout. From the
octilinear bounding polygon, the rectilinear Manhattan bounding box can be quickly identified
by simply taking the low and high x and y-values xL0, YLO, XHI, YHI of the octilinear bounding
polygon. Similarly, the 45°-rotated bounding box can be quickly identified by simply taking
the low and high s- and t-values sLo, tLo SHI, and tm of the octilinear bounding polygon. Also,
the width of each of these bounding polygons in a particular direction can be quickly
computed by subtracting the box's low value from the box's high value in the particular
direction.
The octangle data structure 205 can be used to define design-layout items that are in
shape of points, lines, or a variety of convex polygons. Examples of such items include cells,
circuits, circuit components (such as devices like transistors, capacitors, etc.), vias, obstacles,
pins, bounding polygons, regions of interest, and routes. When a design-layout item is
represented by a non-convex shape that is decomposable into two or more convex shapes, the
design-layout item is defined by two or more octangle data structures, where each octangle
data structure represents one of the convex shapes that forms the item. Some embodiments use essentially similar processes to create the octangle data
structure for cells, circuits, circuit components, vias, obstacles, pins, bounding polygons, and
regions of interest, but use a slightly more efficient approach for representing routes. In the
description below, the creation of the more general octangle data structure will be first
described below. This description will then be followed by a description of the efficient
representation of routes in some embodiments of the invention.
Figure 24 illustrates a process 2400 that defines an octangle data structure for a
design-layout item that is initially defined in terms of the x- and y-coordinates of its vertices.
The design-layout item can be any item in the layout, such as a cell, a circuit, a circuit
component, a via, an obstacle, a pin, a bounding polygon, a route and a region of interest. In
some cases, the item is defined only in terms of two of its vertices. For instance, in some
cases, the item is a rectangle that is initially defined only in terms of x- and y-coordinates of
two of its opposing comers (i.e., only in terms of XL0, YLO, and XHI, YHI)- Alternatively, the
item might be defined in terms of three or more of its vertices. For example, the item might be
a polygon that is defined in terms of the x- and y-coordinates of each of its vertices.
As shown in Figure 24, the process 2400 initially defines (at 2405) an octangle data
structure 205 for the design-layout item. At 2410 and 2415, the process then identifies the
lowest x- and y-values of the item, and stores these values as the xLo and yLo values in the
octangle data structure 205. The item's lowest x- and y-values are respectively the smallest x-
coordinate and the smallest y-coordinate of the item's vertices.
At 2420 and 2425, the process then identifies the highest x- and y-values of the item,
and stores these values as the xHI and ym values in the octangle data structure 205. The item's highest x- and y-values are respectively the largest x-coordinate and the largest y-coordinate
of the item's vertices.
The process then performs (at 2430) a coordinate-transform operation. From the x-
and y-coordinates of the vertices of the design-layout item, the coordinate-transform
operation (at 2430) produces an s- ant t-coordinates for each vertex of the design-layout item.
The process produces the s- and t-coordinates for a particular vertex from the x- and y-
coordinates of the particular vertex by using the above-described coordinate-transform
equations (A) and (B). Also, when the item was initially defined in terms of the x- and y-
coordinates of only two of its vertices, the process initially identifies (at 2430) the x- and y-
coordinates of the other vertices of the item, and then performs (at 2430) its coordinate-
transform operation.
At 2435 and 2440, the process then identifies the smallest s- and t-values of the
vertices of the item (i.e., the smallest s- and t-values computed at 2430), and stores these
values as the sL0 and tL0 values in the octangle data structure 205. At 2445 and 2450, the
process next identifies the largest s- and t-values of the vertices of the item (i.e., the largest s-
and t-values computed at 2430), and stores these values as the SHI and tm values in the
octangle data structure 205. After 2450, the process ends.
The process 2400 of Figure 24 can also be used to define an octangle data structure
that represents an octilinear-bounding polygon of a set of design-layout items that are each
defined in terms of the x- and y-coordinates of two or more vertices. When the process 2400
is used in such a manner, the process 2400 in some embodiments (1) identifies the bounding
polygon's xL0, YLO> XHI and yHι values by examining (at 2410-2425) the vertices of all the
items in the set of design-layout items, (2) performs (at 2430) coordinate transform operations on all the vertices of all the items in the set, and (3) identifies the bounding
polygon's sLo, tLo, SHI and tHι values by examining (at 2435-2450) the vertices of all the items
in the set of design-layout items.
Figure 25 illustrates a process 2500 that defines an octangle data structure for a
design-layout item that is initially defined in terms of the s- and t-coordinates of its vertices.
The design-layout item can be any item in the layout, such as a cell, a circuit, a circuit
component, a via, an obstacle, a pin, a bounding polygon, a route, a region of interest, etc. In
some cases, the item is defined only in terms of two of its vertices. For instance, in some
cases, the item is a rotated rectangle that is initially defined only in terms of s- and t-
coordinates of two of its opposing comers (i.e., only in terms of sLo, tLo, and sHι, tHι).
Alternatively, the item might be defined in terms of three or more of its vertices. For example,
the item might be a polygon that is defined in terms of the s- and t-coordinates of each of its
vertices.
As shown in Figure 25, the process 2500 initially defines (at 2505) an octangle data
structure 205 for the design-layout item. At 2510 and 2515, the process then identifies the
lowest s- and t-values of the item, and stores these values as the sLo and tL0 values in the
octangle data structure 205. The item's lowest s- and t-values are respectively the smallest s-
coordinate and the smallest t-coordinate of the item's vertices.
At 2520 and 2525, the process then identifies the highest s- and t-values of the item,
and stores these values as the sHι and tHι values in the octangle data structure 205. The item's
highest s- and t-values are respectively the largest s-coordinate and the largest t-coordinate of
the item's vertices. The process then performs (at 2530) a coordinate-transform operation. From the s-
and t-coordinates of the vertices of the design-layout item, the coordinate-transform operation
(at 2530) produces an x- ant y-coordinates for each vertex of the design-layout item. The
process produces the x- and y-coordinates for a particular vertex from the s- and t-coordinates
of the particular vertex by using the following coordinate-transform equations (C) and (D),
which are derived from the above-described equations (A) and (B).
x = (s-t), and (C)
y = (s+t). (D)
Also, if the item was initially defined in terms of the s- and t-coordinates of only two of its
vertices, the process initially identifies (at 2530) the s- and t-coordinates of the other vertices
of the item, and then performs (at 2530) its coordinate-transform operation.
At 2535 and 2540, the process then identifies the smallest x- and y-values of the
vertices of the item (i.e., the smallest x- and y-values computed at 2530), and stores these
values as the xL0 and yL0 values in the octangle data structure 205. At 2545 and 2550, the
process next identifies the largest x- and y-values of the vertices of the item (i.e., the largest x-
and y-values computed at 2530), and stores these values as the XHI and yHι values in the
octangle data structure 205. After 2550, the process ends.
The process 2500 of Figure 25 can be used to define an octangle data structure that
represents an octilinear-bounding polygon of a set of design-layout items that are each defined
in terms of the s- and t-coordinates of two or more vertices. When the process 2500 is used in
such a manner, the process 2500 in some embodiments (1) identifies the polygon's sLo, tLo,
sHι and tm values by examining (at 2510-2525) the vertices of all the items in the set of
design-layout items, (2) performs (at 2530) coordinate transform operations on all the vertices of all the items in the set, and (3) identifies the polygon's LO, YLO, XHI and y Hι values
by examining (at 2535-2550) the vertices of all the items in the set of design-layout items.
It might be necessary to identify the octilinear-bounding polygon of a set of design-
layout items that includes (1) a first sub-set of items that are defined in terms of the x- and y-
coordinates of two or more of their vertices, and (2) a second sub-set of items that are defined
in terms of the s- and t-coordinates of two or more of their vertices. In such a case, some
embodiments perform two sets of coordinate transform operations initially to obtain x-, y-, s-
and t-vertex coordinates for each item in the set. These embodiments then identify the
smallest and largest x-, y-, s- and t-vertex coordinate values in the set and store these values in
an octangle data structure. The initial coordinate-transform operations are not needed when
each item in the set is expressed in terms of x-, y-, s-, and t-coordinates.
In some cases, some embodiments do not perform the process 2400 or the process
2500 to identify the octangle data structure of a design-layout item. Instead, in such cases,
these embodiments define the octangle data structure while defining the design-layout item.
For instance, such is the case when some embodiments define an item based on a user's input.
π. REPRESENTATION OF ROUTES
Some embodiments of the invention define each route in terms of one or more
segments and one style for each segment. Each segment is a straight line that connects two
points in the design layout. Some embodiments run-length encode the segments of a route.
Such an encoding specifies each segment in terms of a direction D and a length L. A segment's
direction can be along any of the 8 available routing directions, which are 0°, 45°, 90°, 135°,
180°, 225°, 270°, and 315°. This encoding also specifies an order for the segments of the
route. Such an order can be specified in a variety of ways, such as a singly or doubly linked list, a numbering scheme, etc. In some embodiments, the segments are stored in a 1-
dimensional array. In these embodiments, the order of the segments is the order that they
appear in the array.
The run-length encoding of a route also typically specifies at least a starting point for
the route. From this starting point, a line representation of the route can be constructed as
follows. The first segment Si is initially constructed as a segment that starts at the starting
point and terminates a distance d away from this starting point in the first segment's direction
Dl. When the first segment is in a horizontal or vertical direction, the distance d equals the
length L of the first segment. On the other hand, when the first segment is in a ±45°
direction, the distance d equals the length W,χ of the first segment times square root of 2 (i.e., d
Figure imgf000019_0001
Each subsequent segment of the route is then constructed by performing an iterative
operation. During each iteration, the operation constructs one segment, referred to as the
current segment So This current segment Sc starts at the termination of the previously
constructed segment SP, which is before the current segment in the route in the segment order
that is being constructed. The current segment Sc terminates at a point that is a distance dc
(where dc is the current segment's length- Lc when the segment is in a horizontal or vertical
direction, or is the current segment's length LC* V2 when the segment is in a ±45° direction)
away from the previous segment's termination point in the current segment's direction D.
This iterative operation terminates once it has constructed the last segment.
As mentioned above, some embodiments also define a style for each segment of a
route. A style specifies eight values that can be used to transform a line-representation of a
segment into a convex polygonal shape that represents a more complete geometric representation of the segment. These eight values include four low values, dx o, dyL0, dsLo,
dt 0, and four high values, dxm, dyHι, dsHι, and dtm. The low values are subtracted from the
segment's lowest x-, y-, s- and t-values to obtain the low values of convex polygon that
represents the segment, while the high values are added to the segment's highest x-, y-3 s-, and
t-values to obtain the high values of the convex polygon.
Figures 26 and 27 illustrate the use of two different styles for the same segment
2600. The segment 2600 connects the x,y coordinates (1,3) and (5,7), which map to the s,t
coordinates (4,2) and (12,2). In the example illustrated in Figure 26, the style is specified by
the following eight values:
dxL0=2, dyL0=2, dsL0=3, dtL0=3, dxHι=2, dyHI=2, dsHr=3, dtHr=3.
Figure 26 illustrates that the subtraction of the style's low values from the corresponding
low values of the segment 2600 identifies the following four half-planes:
Figure imgf000020_0001
while the addition of the style's high values from the corresponding high values of the segment
2600 identifies the following four half-planes:
XHI=7, yffl=9, SHI=15, tm=5.
As shown in Figure 26, these eight half planes define an octagon 2605.
In the example illustrated in Figure 27, the style is specified by the following eight
values:
dxL0=2, dyL0=2, dsL0=3, dtL0-=3, dxm-=2, dym=2, dsffl=l, dtHι=3.
Figure 27 illustrates that the subtraction of the style's low values from the corresponding
low values of the segment 2600 identifies the following four half-planes:
Figure imgf000020_0002
while the addition of the style's high values from the corresponding high values of the segment
2600 identifies the following four half-planes:
XHI =7, yHi= , sHι=13, tm=5.
As shown in Figure 27, these eight half planes define a hexagon 2705. Accordingly, in the
example illustrated in Figures 26 and 27, the use of two different styles for the same segment
2600 resulted in two different convex polygonal shapes 2605 and 2705 for the segment.
Figure 28 illustrates a process for constructing the polygonal shape of a wire segment
from its direction, length, and associated style information. This process works in conjunction
with a data structure and database arrangement illustrated in Figure 29. Figure 29 illustrates
that a segment is represented as a segment data structure 2905 that stores the length and
direction of the segment, and potentially other segment identifying indicia, such as relational
data that specifies the order of the segment in the segment's route. As shown in this figure,
the segment data structure also includes an index 2910 that identifies a record 2920 in a style
table 2915. Each record in the style table 2915 is identifiable by a unique style index 2910.
Also, each record specifies a unique set of 8 delta values, dxLo, dyL0, dsLo, dtL0, dxHι, dym,
dsHι, and dtm.
As shown in Figure 28, the process 2800 initially identifies (at 2805) the x-, y-, s-,
and t-coordinates of the start and end points of the segment from the segment's start
coordinate, direction, and length. As mentioned above, a particular segment's start coordinate
is the termination coordinate of the previous segment in the route, unless the particular
segment is the first segment, in which case its start coordinate is the start point of the route.
The segment's end point is a point that is a distance d away from the segment's start point in
the segment's direction D. As mentioned above, the distance d is the segment's length L when the segment is in a horizontal or vertical direction, or is the segment's length times square root
of 2 (L* 2 ) when the segment is in a ±45° direction.
The process then retrieves (at 2810) the delta values (dx o, dyL0, dsL0, dtL0, dxHI,
dym, dsm, and dtHι) associated with the style of the segment. It then computes (at 2815) the
x-low value xPL0 of the polygon that is to represent the segment by subtracting dxL0 from the
segment's X O- The process next computes (at 2820) the y-low value yPLo of the polygon by
subtracting dyLo from the segment's yLo It then computes (at 2825) the s-low value sPLo of
the polygon by subtracting dsLo from the segment's s 0- The process next computes (at
2830) the t-low value tPLo of the polygon by subtracting dtL0 from the segment's tL0-
The process then computes (at 2835) the x-high value XPHI of the polygon that is to
represent the segment by adding dxm to the segment's XHI. The process next computes (at
2840) the y-high value yPHι of the polygon by adding dym to the segment's yHI. It then
computes (at 2845) the s-high value sPHι of the polygon by adding dsm to the segment's sm.
The process next computes (at 2850) the t-high value trøi of the polygon by adding dtm to
the segment's tHι- The computed parameters xPL0, yPιχ>, SPLO, PLo, XPHI, YPHI, S PHI> and tPHι for
the polygon define the shape of the polygon. Accordingly, these values can be stored in an
octangle data structure to represent the polygon.
The process 2800 can be used in a variety of different scenarios when it is desirable to
specify the actual geometry of the routes from their segment and style information. For
instance, this process could be used to generate a display of the routes, to output data to a
GDS file, to perform extraction, to estimate routing capacity, etc.
Figure 30 illustrates two different views of a design layout 3000 that includes three
routes 3005, 3010, and 3015. The first view 3020 illustrates each route in terms of a set of line segments that are abutting. The second view 3025 illustrates each route in terms of a set
of polygons that partially overlap. Each of the polygons in the second view corresponds to a
particular segment in the first view. As described above by reference to Figure 28, each
particular polygon in the second view can be generated from its corresponding segment by
applying the delta parameters of the segment's associated style to the style's endpoint values.
Hence, to store efficiently the routes illustrated in Figure 30, some embodiments (1) store
each route in terms of the route's set of segments, and (2) as illustrated in Figure 29, specify
each segment in terms of its length, direction, and style-table index. The style table index of a
segment, in turn, identifies a set of delta parameters, which when applied to the segment's
endpoints specify eight half planes that define the segment's polygonal shape.
Figure 31 illustrates a process 3100 that generates the segment and style information
from a polygon that represents a route segment. An EDA tool performs this process when
the tool does not have the style and segment information. For instance, a power router might
perform such an operation if it does not use a pre-defined style for the routes that it defines.
It should be noted that when an EDA tool has the style and/or segment information
associated with a polygonal representation of a route, the tool simply generates the needed
segment and style information from the eight half planes that represent the polygon and the
available segment and style information.
As shown in Figure 31, the process 3100 initially identifies (at 3105) the coordinate
axis that will be parallel to the segment that the process will define for the polygon that
represents the route segment. Figure 32 illustrates how some embodiments identify this
coordinate axis. This figure illustrates a polygon 3205 for which segment and style data needs
to be generated. For the polygon 3205, some embodiments identify the Manhattan bounding box 3210 and 45°-rotated bounding box 3215 that enclose the polygon. These bounding
polygons can be identified according to the approach described above, which is further
elaborated in the above-incorporated non-provisional patent application.
These embodiments next identify the bounding box with the smallest area, and then
based on the identified bounding box, specify the coordinate axis along which the route
segment will be defined. For instance, when the Manhattan bounding box has the smaller area,
then the process 3100 determines (at 3105) whether the polygon's width is longer along the x-
axis than its width along the y-axis. If so, the process identifies (at 3105) the x-axis as the
coordinate axis. Otherwise, the process identifies (at 3105) the y-axis as the coordinate axis.
On the other hand, when the 45°-rotated bounding box has the smaller area, then the process
determines (at 3105) whether the polygon's width is longer along the s-axis than its width
along the t-axis. If so, the process identifies (at 3105) the s-axis as the coordinate axis.
Otherwise, the process identifies (at 3105) the t-axis as the coordinate axis. In the example
illustrated in Figure 32, the rotated bounding box 3215 has the smaller area and the polygon's
width along the s-axis is larger than its width along the t-axis. Accordingly, the s-axis is
identified (at 3105) as the coordinate axis for the segment that is to be defined for the polygon
3205.
After identifying the coordinate axis at 3105, the process defines (at 3110) the
segment as a line that is parallel to the identified coordinate axis, and that is half way between
the polygon's high and low coordinates on the coordinate axis perpendicular to the identified
axis. At this stage, the process also specifies (at 3110) the x-, y-, s-, and t-coordinate values
of the two endpoints of the segment. These two endpoints are two points on the boundary of
the polygon that are intersected by the defined segment (i.e., are intersected by a line that is parallel to the identified coordinate axis and that is half way between the polygon's high and
low coordinates on the coordinate axis perpendicular to the identified axis). For instance, in
the example illustrated in Figure 32, the segment 3220 is identified to be parallel to the s-axis
and halfway between the high and low t-axis coordinates of the polygon 3205. The endpoints
of the segment 3220 are points 3225 and 3230.
The process then identifies the 8 delta values, dxL0, dyL0, dsL0, dtLO, dxm, dyffl, dsm,
and dt-eπ, associated with the style. Specifically, it computes (at 3115) the low delta x- value
dx 0 by subtracting the polygon's x-low value XpLo from the x-low value L0 of the segment.
The process then computes (at 3120) the low delta y- value dyLo by subtracting the polygon's
y-low value yP o from the y-low value yL0 of the segment. It then computes (at 3125) the
low delta s-value dsLO by subtracting the polygon's s-low value sPL0 from the s-low value sL0
of the segment. The process next computes (at 3130) the low delta t-value dt o by
subtracting the polygon's t-low value tP o from the t-low value tLo of the segment.
The process then computes (at 3135) the high delta x-value dxHι by subtracting the x-
high value xm of the segment from the polygon's x-high value xPHI. It next computes (at 3140)
the high delta y-value dym by subtracting the y-high value yHι of the segment from the
polygon's y-high value yPκι. The process then computes (at 3145) the high delta s-value dsHι
by subtracting the s-high value sm of the segment from the polygon's s-high value sPHι- It next
computes (at 3150) the high delta t-value dtHι by subtracting the t-high value tHι of the
segment from the polygon's t-high value tPHι.
The computed delta values dxL0, dyL0, dsL0, dtL0, dxHι, dyHι, dsπi, and dtm define a
style, which can be stored and indexed in a database table, such as table 2915 of Figure 29.
This style can be indexed by a segment data structure (such as structure 2905 of Figure 29) for the segment specified at 3110. The direction of this segment would be one of the two
directions parallel to the coordinate axis identified at 3105. The length of this segment would
be the distance between the two endpoints of the segment.
HI. ACUTE ANGLE REMOVAL
Some embodiments of the invention provide a method for removing acute angles
between edges of a route. In some of these embodiments, each edge of the route is represented
in terms of a segment and a style as described above. In some embodiments, an acute angle is
an angle that is less than 90°. Accordingly, in these embodiments, two segments of a route
form an acute angle if an angle less than 90° is created at their juncture. In the embodiments
that have routes with horizontal, vertical, and/or ±45° segments, an acute angle is 45°. As
illustrated in Figure 33, such an acute angle exists at the juncture between a horizontal
segment and a +45° or -45° segment, and at the junction between a vertical segment and a
+45° or -45° segment.
Figure 34 illustrates a process 3400 that is performed for each two contiguous
segments SI and S2 of a route in order to determine whether there is an acute angle between
the two segments, and if so, to remove the acute angle. Two segments are contiguous in a
route if the end of one segment is the beginning of the next segment. The process 3400 will be
described below by reference to Figure 35, which illustrates the juncture between two
segments 3505 and 3510.
As shown in Figure 34, the process 3400 initially determines (at 3405) whether an
acute angle is formed between the two segments SI and S2. When routes have segments with
horizontal, vertical, and/or ±45° directions, an acute angle is a 45° angle that is formed at the
juncture between abutting horizontal and diagonal segments and abutting vertical and diagonal segments. Some embodiments store whether there is an acute angle between different
combination of segments in a look-up table. In these embodiments, the process 3400 makes
the determination at 3405 by identifying the directions of the two segments SI and S2 and
then examining the look-up table to determine whether there is an acute angle at the juncture
between SI and S2. In the example illustrated in Figure 35, there is an acute 45° angle
between the segments 3505 and 3510.
If the process 3400 determines (at 3405) that there is no acute angle between SI and
S2, the process terminates. Otherwise, the process specifies a new segment S3 at 3410. The
process then specifies (at 3415) the length of this segment as 0. From a look-up table that
stores an index into the style table 2915 for each combination of adjacent segments, the
process 3400 then retrieves (at 3420) an index into the style database table 2915 for the pair
of segments SI and S2. As further described below, the style identified by the retrieved index
can be used in conjunction with the zero-length segment S3 to specify a polygon that fills the
acute angle formed by the particular pair of segments SI and S2. At 3420, the process
associates the retrieved style-table index with the zero-length segment specified at 3410.
After 3420, the process then inserts (at 3425) the zero-length segment S3 between
segments SI and S2 on the ordered set of segments of the route. How this insertion is done
depends on the manner that the ordered set of segments are specified. For instance, if the
ordered set of segments are established in terms of a linked list, a segment can be inserted by
disconnecting one single or double link, and establishing links between the zero-length
segment and the two previously connected segments. On the other hand, when the segments
are ordered in a 1 -dimensional array, a segment can be inserted through an insertion function
that (1) pushes all the segments after the insertion location of the zero-length segment down by one and then (2) stores the zero-length segment in the insertion location. When no such
function exists, the segment can be inserted in the array by reading out the segments from the
array, inserting the segment at the right location in the order, and then re-storing the segments
in the array.
In the example illustrated in Figure 35, the process 3400 would retrieve (at 3420) a
style-table index that is stored in the look-up table for the combination of a 0° segment and a
135° segment, or a -45° segment and a 180 segment. The retrieved style table index would
specify the following eight delta values:
dxLO=20, dyL0-=-5, dsLO=20, dtLO=-10, dxm=-10, dyHι=20, dsHι=-5, dtm=25.
In Figure 35, the zero-length segment S3 that is inserted between segments 3505 and 3510 is
represented as a node 3515. As shown in Figure 35, the eight delta values of the style
identified by the retrieved style index (i.e., the retrieved dx 0, dyL0, dsL0, dtL0, dxHι, dym,
dsHι, dtHι), specify a triangle 3520 that fills the acute angle created at the juncture of the
segments 3505 and 3510.
IV. COMPUTER SYSTEM
Figure 36 conceptually illustrates a computer system with which some embodiments
of the invention are implemented. Computer system 3600 includes a bus 3605, a processor
3610, a system memory 3615, a read-only memory 3620, a permanent storage device 3625,
input devices 3630, and output devices 3635.
The bus 3605 collectively represents all system, peripheral, and chipset buses that
communicatively connect the numerous internal devices of the computer system 3600. For
instance, the bus 3605 communicatively connects the processor 3610 with the read-only
memory 3620, the system memory 3615, and the permanent storage device 3625. From these various memory units, the processor 3610 retrieves instructions to execute
and data to process in order to execute the processes of the invention. The read-only-memory
(ROM) 3620 stores static data and instructions that are needed by the processor 3610 and
other modules of the computer system. The permanent storage device 3625, on the other
hand, is read-and-write memory device. This device is a non-volatile memory unit that stores
instruction and data even when the computer system 3600 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 3625. 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 3625, the system memory 3615
is a read-and-write memory device. However, unlike storage device 3625, 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 3615, the
permanent storage device 3625, and/or the read-only memory 3620.
The bus 3605 also connects to the input and output devices 3630 and 3635. The input
devices enable the user to communicate information and select commands to the computer
system. The input devices 3630 include alphanumeric keyboards and cursor-controllers. The
output devices 3635 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 36, bus 3605 also couples computer 3600 to a
network 3665 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 3600 may be used in conjunction with the invention.
However, one of ordinary skill in the art would appreciate that any other system
configuration may also be used in conjunction with the present 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 might also include a layer attribute in the octangle data structure 205 of Figure
2, while other embodiments might specify the layer information in some other manner.
Also, several of the above-described embodiments use the octangle data structure 205,
which is useful to represent design-layout items with horizontal, vertical, and ±45° directions.
Other embodiments, however, might use other types of data structures that are optimized for
other types of design-layout items.
For example, some embodiments define routes according to a hexagonal wiring model
that specifies three routing directions that are offset from each other by 60°. For such a wiring
model, some embodiments use a hexangle data structure 3700 that is illustrated in Figure 37.
This data structure stores eight values that are defined with respect to a hexagonal coordinate
system 3800 illustrated in Figure 38. As shown in Figure 38, the hexagonal coordinate
system includes a Manhattan coordinate system and a rotated coordinate system. The rotated
coordinate system includes u- and v-axes. The u-axis is at a 60° clockwise rotation from the
y-axis, while the v-axis is at a 60° counterclockwise rotation from the y-axis. The hexangle
data structure represents each convex geometric shape in terms of eight values, XL0, Y O, U O, V O, X HI, ym, u ι, and VHI- These eight values define eight half planes that bound a design-
layout item in the Manhattan and rotated coordinate systems. The eight values are useful in
representing design-layout items (such as pins) that have sides in the Manhattan and ±30°
directions (where 30° is defined with respect to the Manhattan coordinate system). In
addition, the y-, u-, and v-values are useful in representing routes that have segments parallel
to the y-, u-, and v-axis.
In some cases, the hexagonal wiring model specifies the x-axis as one of the routing
directions. In these cases, the three routing directions are 0°, 60°, and -60°. In these cases, the
u- and v-values of the hexangle data structure 3700 would be defined by reference to the
coordinate system of Figure 39. This coordinate system is similar to the coordinate system
3800 of Figure 38, except that the u'- and v'-axes in Figure 39 are rotated by 60° with
respect to the x-axis.
Alternatively, instead of specifying a data structure that is optimized for one of the
two potential hexagonal wiring models mentioned above, some embodiments use a symmetric-
hexangle data structure 4000 illustrated in Figure 40. This data structure is defined for the
coordinate system of Figure 41, which includes a Manhattan coordinate system, a 30°-
rotated coordinate system, and a 60°-rotated coordinate system. The 30°-rotated coordinate
system includes two axes, u- and v-axes, that are rotated by 30° with respect to the x-axis
(i.e., are rotated by 60° with respect to the y-axis). The 60°-rotated coordinate system
includes two axes, u'- and v'-axes, that are rotated by 60° with respect to the x-axis.
The symmetrical hexangle data structure 4000 represents each convex geometric shape
in terms of twelve values, xL0, yLo, uLo, vLo, U'LO, V'LO, XHI, YHI, um, vHι, 'Hι, and v'm. These
twelve values define twelve half planes that bound a design-layout item in the three sub- coordinate systems of the coordinate system of Figure 41. The twelve values are useful in
representing design-layout items (such as pins or routes) that might have sides in the
Manhattan, ±30°, and ±60° directions. 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

CLAIMSWe claim:
1. A method of removing acute angles from routes in a design layout, the method
comprising:
a) selecting a route with a plurality of segments;
b) identifying an acute angle between first and second contiguous
segments of the route;
c) inserting a third segment between the first and second segments,
wherein the third segment has an associated shape that fills the acute angle between the first
and second segments.
2. The method of claim 1 , wherein each segment has a length and the length of the
third segment is zero.
3. The method of claim 2, wherein each segment has an associated shape, wherein
the associated shape of each segment is specified by a set of n values.
4. The method of claim 3, wherein the n values are used to specify n half-planes
that when intersected define the shape of the segment.
5. The method of claim 4 further comprising identifying n values for the third
segment based on at least one attribute of the first and second segments.
6. The method of claim 5, wherein identifying the n values comprises retrieving
the n values from a data storage based on the attribute of the first and second segments.
7. The method of claim 3, wherein n is the number of manufacturing directions.
8. The method of claim 3, wherein n is the number of directions for the sides of at
least one item in the design.
9. The method of claim 8, wherein at least two directions are neither parallel nor
perpendicular with respect to each other.
10. The method of claim 1, wherein an acute angle is an angle that is greater than 0°
but less than 90°.
11. A computer readable medium that stores a computer program for removing
acute angles from routes in a design layout, the computer program comprising sets of
instructions for:
a) selecting a route with a plurality of segments;
b) identifying an acute angle between first and second contiguous
segments of the route;
c) inserting a third segment between the first and second segments,
wherein the third segment has an associated shape that fills the. acute angle between the first
and second segments.
12. The computer readable medium of claim 11, wherein each segment has a length
and the length of the third segment is zero.
13. The computer readable medium of claim 12, wherein each segment has an
associated shape, wherein the associated shape of each segment is specified by a set of n
values.
14. The computer readable medium of claim 13, wherein the n values are used to
specify n half-planes that when intersected define the shape of the segment.
15. The computer readable medium of claim 14 further comprising a set of
instructions for identifying n values for the third segment based on at least one attribute of the
first and second segments.
16. The computer readable medium of claim 15, wherein the set of instructions for
identifying the n values comprises a set of instructions for retrieving the n values from a data
storage based on the attribute of the first and second segments.
17. The computer readable medium of claim 13, wherein n is the number of
manufacturing directions.
18. The computer readable medium of claim 13, wherein n is the number of
directions for the sides of at least one item in the design.
19. The computer readable medium of claim 18, wherein at least two directions are
neither parallel nor perpendicular with respect to each other.
20. The computer readable medium of claim 11, wherein an acute angle is an angle
that is greater than 0° but less than 90°.
PCT/US2004/014380 2003-05-07 2004-05-06 Removal of acute angles in a design layout WO2004102339A2 (en)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US46892603P 2003-05-07 2003-05-07
US60/468,926 2003-05-07
US10/443,595 2003-05-21
US10/443,811 2003-05-21
US10/443,811 US7080339B2 (en) 2003-05-07 2003-05-21 Plane representation of wiring in a design layout
US10/443,315 2003-05-21
US10/443,315 US7065731B2 (en) 2003-05-07 2003-05-21 Removal of acute angles in a design layout
US10/443,595 US7243328B2 (en) 2003-05-07 2003-05-21 Method and apparatus for representing items in a design layout

Publications (2)

Publication Number Publication Date
WO2004102339A2 true WO2004102339A2 (en) 2004-11-25
WO2004102339A3 WO2004102339A3 (en) 2005-03-24

Family

ID=33459127

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2004/014380 WO2004102339A2 (en) 2003-05-07 2004-05-06 Removal of acute angles in a design layout

Country Status (1)

Country Link
WO (1) WO2004102339A2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065731B2 (en) 2003-05-07 2006-06-20 Cadence Design Systems, Inc. Removal of acute angles in a design layout
US8015529B1 (en) 2005-03-09 2011-09-06 Cadence Design Systems, Inc. Methods and apparatus for diagonal route shielding
US8065649B2 (en) 2005-08-01 2011-11-22 Cadence Design Systems, Inc. Method and apparatus for routing
US8074187B2 (en) 2005-08-01 2011-12-06 Candence Design Systems, Inc. Method and apparatus for inserting metal fill in an integrated circuit (“IC”) layout

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301686B1 (en) * 1998-03-24 2001-10-09 Nec Corporation Graphic layout compaction system capable of compacting a layout at once

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6301686B1 (en) * 1998-03-24 2001-10-09 Nec Corporation Graphic layout compaction system capable of compacting a layout at once

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7065731B2 (en) 2003-05-07 2006-06-20 Cadence Design Systems, Inc. Removal of acute angles in a design layout
US8015529B1 (en) 2005-03-09 2011-09-06 Cadence Design Systems, Inc. Methods and apparatus for diagonal route shielding
US8065649B2 (en) 2005-08-01 2011-11-22 Cadence Design Systems, Inc. Method and apparatus for routing
US8074187B2 (en) 2005-08-01 2011-12-06 Candence Design Systems, Inc. Method and apparatus for inserting metal fill in an integrated circuit (“IC”) layout

Also Published As

Publication number Publication date
WO2004102339A3 (en) 2005-03-24

Similar Documents

Publication Publication Date Title
US7065731B2 (en) Removal of acute angles in a design layout
US7721243B2 (en) Method and apparatus for routing
US7007258B2 (en) Method, apparatus, and computer program product for generation of a via array within a fill area of a design layout
US6996790B2 (en) System and method for generating a two-dimensional yield map for a full layout
US5416722A (en) System and method for compacting integrated circuit layouts
KR20020027363A (en) Method of modifying an integrated circuit
US7827514B2 (en) Efficient electromagnetic modeling of irregular metal planes
US7519929B2 (en) Method and computer program product for interlayer connection of arbitrarily complex shapes under asymmetric via enclosure rules
US6757878B2 (en) Method and apparatus for layout synthesis of regular structures using relative placement
US6735749B2 (en) (Design rule check)/(electrical rule check) algorithms using a system resolution
US20120297354A1 (en) Method and apparatus for approximating diagonal lines in placement
US7380227B1 (en) Automated correction of asymmetric enclosure rule violations in a design layout
US8219959B2 (en) Generating integrated circuit floorplan layouts
US7243328B2 (en) Method and apparatus for representing items in a design layout
US9262571B2 (en) Layout migration with hierarchical scale and bias method
US8015529B1 (en) Methods and apparatus for diagonal route shielding
US6671867B2 (en) Analytical constraint generation for cut-based global placement
US7080339B2 (en) Plane representation of wiring in a design layout
EP1091325B1 (en) Defining parameters for an FEA calculation in a CAD program
US6665846B2 (en) Method and configuration for verifying a layout of an integrated circuit and application thereof for fabricating the integrated circuit
WO2004102339A2 (en) Removal of acute angles in a design layout
US6820048B1 (en) 4 point derating scheme for propagation delay and setup/hold time computation
Woodbury et al. Localized coarsening of conforming all-hexahedral meshes
US7310793B1 (en) Interconnect lines with non-rectilinear terminations
US7055114B2 (en) Systems and processes for asymmetrically shrinking a VLSI layout

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 KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL 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): BW GH 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 IT 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
DPEN Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed from 20040101)
122 Ep: pct application non-entry in european phase