USPatent applicationPatented

Cell placement in integrated circuit chips to remove cell overlap, row overflow and optimal placement of dual height cells

Granted 30 Sep 2003 · 1 office action

Application· this page
9955698
filed 19 Sep 2001
Publication
Not published
not published
Patent
US 6,629,304
granted 30 Sep 2003

Life of the application

16 dated events
⤢ drag to zoom20022004200620082010201220142016201820202022ProsecutionOwnershipTerm & fees
ProsecutionOwnershipTerm & feeshover for detail · click to open

Abstract

Cell overlap is removed from rows during a cell placement procedure for an integrated circuit chip. The rows are partitioned into subrows so that cells in each subrow have a common characteristic vector. Cell overflow is removed from each of the subrows by moving a cell of an overflowed row or exchanging two cells, at least one of which is in the overflowed subrow. The half-cells of the dual height cells are moved to cell positions in a suitable pair of rows based on a calculated movement penalty. The movement is accomplished to align the half-cells and minimize the penalty. In preferred embodiments, the process is carried out by a computer under control of a computer program.

Description

12 parts
›FIELD OF THE INVENTION

This invention is directed to cell placement in integrated circuit (IC) chips, and particularly to removing cell overlaps and row overflows and to placement of dual height cells during design of IC chips.

›BACKGROUND OF THE INVENTION

IC chips comprise plural cells each consisting of one or more circuit elements, such as transistors, capacitors and other basic circuit elements, grouped to perform a specific function. Each cell has one or more pins that are connected by wires to one or more pins of other cells of the chip. A net is the set of pins connected by the wire; a netlist is a list of nets of the chip. Each cell represents a single element, such as a gate; or several elements interconnected in a standardized manner to perform a specific function. Cells that consist of two or more interconnected gates or elements are also available as standard modules in circuit libraries. During chip layout, the cells may be treated as having a rectangular outline. Ordinal cells usually have the same height, although the width of the cells may be different.

All ordinal cells are arranged in rectangular regions along rows on the chip. The height of each row is equal to the common height of the ordinal cells; the length of a row is usually equal to the width of the chip. The rows define columns on the chip extending orthogonal to the rows; the column height is usually equal to the sum of the height of cells in the column.

A chip may contain several million transistors. Ordinarily, computer-aided design techniques cannot layout the entire circuit due to limitations on the memory space as well as the computation power available. Therefore, the layout is normally partitioned by grouping the components into blocks such as subcircuits and modules. The actual partitioning process considers many factors, such as the number and size of the blocks and number of interconnections between the blocks.

The output of partitioning is a set of blocks, along with the interconnections required between blocks. In large circuits, the partitioning process is often hierarchical and at the topmost level a circuit can have between 5 and 25 blocks. Each block is then partitioned recursively into smaller blocks. These blocks are called functions. Consequently, each function has a region of the chip where the cells of the function are placed. The regions of the different functions can be intersected.

Cells are -placed into the regions associated with the function. The different function regions can be intersected, and a characteristic vector (x 1 , . . . , x n ) can be assigned to each point of the chip, where n is the number of the functions; xi is equal to 1 if this point belongs to the i-th function and xi is equal to 0 if the point does not belong to the i-th function. Each row of the chip can be partitioned into subrows such that different subrows contain points with different characteristic vectors, and all points of one subrow have the same characteristic vector (this vector is called the characteristic vector of the subrow).

In some cases, large cells (called dual height cells) may be appear as two or more ordinal cells (called half-cells) of neighboring rows, where the half-cells have common horizontal (x-direction) sides. Consequently, the heights of dual-height cells are usually some multiple of the height of ordinal cells.

Chips are designed using computer-aided design (CAD) techniques. Where a hierarchical placement is employed, timing resynthesis procedures are employed prior to final cell placement. In some cases, uniform density control procedures are applied during resynthesis to prevent the chip from having overflowed regions and cell congestion. However, these procedures do not prevent creation of cell overlaps in the chip.

A cell overflow condition occurs where the sum of the heights of cells assigned to a column exceeds the height of the column. Where there is no cell overflow in a given subrow, cell overlap can be removed using the cell placement technique described by Scepanovic et al. in U.S. Pat. No. 6,026,223 granted Feb. 15, 2000 for “Advanced Modular Cell Placement System with Overlap Remover with Minimal Noise” and assigned to the same assignee as the present invention. However, the overlap removal technique described by Scepanovic et al. is not altogether effective where subrows contain cell overflow. Moreover, after resynthesis and overlap removal, half-cells of a dual height cell may have different x coordinates. Consequently, it becomes necessary to assign new positions to the half-cells.

›SUMMARY OF THE INVENTION

In one embodiment of the invention, cell overlap is removed from rows during a cell placement procedure for an integrated circuit chip. The rows are partitioned into subrows so that each subrow contains cells having a common characteristic vector. Cell overflow is removed from each of the subrows. Cell overlap is removed from each of the subrows, and the positions of half-cells of dual height cells are adjusted in adjacent rows for minimal offset of the half-cells.

In some embodiments, the half-cells of the dual height cells are moved to cell positions in a suitable pair of rows. A penalty is calculated based on a distance between the half-cells of a dual height cell before and after the move. A dual height cell is removed from the pair of rows if the calculated penalty is not acceptable. New row coordinates are calculated for the half-cells in the pair of rows if the penalty is acceptable, whereupon the pair of rows are aligned to minimize the penalty and the half-cells of the dual height cells are moved to cell positions in the pair of rows to minimize the penalty.

In other embodiments cell overflows are removed from a row. A movement is chosen, for example a movement of one cell or an exchange of two cells, each overflowed subrow. If the incremented size of the subrows does not exceed the maximum size and the overflows are removed, the movement is performed. Otherwise the size of the subrow containing overflows is incremented, and another movement is chosen.

In preferred embodiments, the invention is manifest in a computer readable program containing code that causes the computer to carry out the steps of the processes described.

›BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flow chart illustrating the process of overlap removal in accordance with one embodiment of the present invention.

FIG. 2 illustrates a portion of a chip layout to illustrate certain aspects of the overlap removal process of FIG. 1 .

FIG. 3 is a flow chart illustrating a process to remove row overflows in the overlap remover of FIG. 1 .

FIGS. 4-7 are flow charts of various subprocesses employed in the row overflow removal illustrated in FIG. 3 .

FIG. 8 is a diagram useful in an understanding of movement of non-critical cells in the subprocess illustrated in FIG. 7 .

FIGS. 9 and 10 are diagrams useful in understanding the problem of placement of dual height cells.

FIG. 11 is a flow chart illustrating a subprocess employed in the process to place dual height cells.

FIG. 12 is a flow chart illustrating a process to place dual height cells.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 1 of 8

FIG. 1 illustrates the steps of one embodiment of overlap removal for chip designs having dual height cells place with a hierarchical placement procedure in accordance with the present invention. At step 100 , each function is checked to make certain that the function has enough space for all cells of the function. A vertical grid line with an x coordinate X belongs to the subrow (x min , y min , x max , y max ) if x min ≦X≦x max and the segment {X,y)|y min ≦y≦y max } does not intersect any blockage. A blockage is a region of a chip where ordinal cells cannot be placed. The number of vertical grid lines belonging to a subrow is the width of the subrow. If Cell xmin and Cell max are the x coordinates of the outline of some cell and D vert is the distance between neighbor vertical grid lines then the value Cell x     max - Cell x     min D vert

is the width of the cell.

A cell belongs to a given region if the cell coordinates belong to that region. Each row has a specific characteristic called an angle. An angle can be equal to 0° or 180°. The angles of all cells belonging to some row must be equal to the angle of the row. Dual height cell of a chip can be placed in two neighbor rows only if their outlines have a common horizontal side and the first of these rows has an angle of 180°, and the second row has an angle of 0°. Each fixed cell is treated as a blockage.

Two characteristics are assigned to each cell n: CellRamptimeViolation     ( n ) =    max  { CellCapacity i -    CellMaxCap i   i = 1 , …    , k } and CellTime  ( n ) =    max  { CellPinArrTime i +    CellPinDepTime i   i = 1 , …    , m } ,

where k is the number of the output pins of the cell n, CellMaxCap i is the maximal allowed capacity of the net driven by the i-th output pin of the cell n, CellCapacity i is the capacity of the net driven by the i-th output pin of the cell n, m is the number of the pins of the cell n, CellPinArrTime i is the maximal arrival time of the i-th pin of the cell n, and CellPinDepTime i is the maximal departure time of the i-th pin of the cell n. One method of calculating the capacity of a net and the departure and arrival times is more fully described in U.S. application Ser. No. 09/677,475 filed Oct. 2, 2000 by Zolotykh et al. for “Method and Apparatus for Timing Driven Resynthesis” and assigned to the same assignee as the present invention.

A cell n is considered critical if either

CellRamptimeViolation( n )>−ξ 1 , or

CellTime( n )>CriticalTime−ξ 2 ,

where ξ 1 , ξ 2 and CriticalTime are parameters of the procedure.

At step 102 , the total width SumWidth(i) of if all cells is calculated for each function i, and the total width of all subrows of each function region is calculated and denoted by SumArea(i). All chip functions are examined. At step 104 , if SumWidth(i)>SumArea(i) for some function i, non-critical cells of the function are randomly removed, one at a time. With each removal iteration, SumWidth(i) is reduced by the width of the removed cell. The removal process continues until SumWidth(i)≦SumArea(i). The coordinates of the removed cells are not changed.

At step 110 , the cell rows are partitioned into subrows, taking into account characteristic vectors. All chips rows are examined individually. For each row a set of integers X is created. Initially, X is assigned the value {x min , x max }, where x min and x max are the x coordinates of the current row. Then all function regions and blockages are examined. If the rectangle of a region or a blockage intersects the current row, the x coordinates of this rectangle are added to set X. Set X is then sorted in increasing order. The sorting results in a set X={x 1 , . . . ,x k }. Consequently, for any iε{1, . . . , k−1} and for all points of the row with x coordinates between x i and x i+1 , the characteristic vectors of these points are the same.

Each region of the row between the vertical lines with the x coordinates x i and x i+1 , (i=1, . . . , k−1) is identified as a subrow. The characteristic vector is calculated, and all subrows having a characteristic vector (0, . . . , 0) are removed. An example of a row partition is illustrated in FIG. 2 where row r includes subrows 200 , 202 and 204 , and a blockage 206 . Row r contains cells of functions I and II.

At step 120 , subrow overflows are removed. All cells are examined individually. If a cell is outside its function region or outside the subrows the cell is moved to the closest subrow that belongs to the function region.

An auxiliary structure in the form of a sextuple (x,x old , r old , w, n, cr) is assigned to each cell, where x and x old are the x coordinates of the cell origin point, r old is the number of the row that contains this cell, w is the cell width, n is the cell number, cr is 1 if the cell is critical or cr is 0 if the cell is not critical. Sextuples (x, x old , r old , w, n, cr) and (x, x old , r old +1, w, n, cr) are assigned to dual height cells.

The number of subrows is N. For each i=1, . . . , N, a set S.(i) of the sextuples is created. A sextuple is included to S(i) if the corresponding cell belongs to the i-th subrow. The sets S(i) of sextuples are sorted in increasing order of the field x. An auxiliary structure in the form of an array Excess[i] (i=1, . . . , N) is assigned to each subrow. Excess[i]=SumSubrowCellWidth[i]−SubrowWidth[i], where SumSubrowCellWidth[i] is the total width of all cells of the i-th subrow and SubrowWidth[i] is the width of the i-th subrow. If Excess[i]>0 for some i, an overflow exists in the i-th subrow.

An overflowed subrow i is randomly chosen, and an attempt is made to move some sextuple from S(i) to a neighbor subrow j or to exchange a sextuple of S(i) with a sextuple of the neighbor subrow j to decrease the total overflow. If some sextuple is moved or exchanged, its field x is changed and the corresponding sets S(i), S(j), and the values Excess [i], Excess[j] are changed. If a sextuple corresponding to a dual height cell is moved, the other sextuple corresponding to this cell is also moved. The fields x old and r old of the sextuples are used to prevent movement of large distances between the new and the initial positions of the cell.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 2 of 8

If overflow removal is not possible in some subrow i, a noncritical sextuple is randomly chosen and removed. Excess[i] is reduced by the width of the cell of the removed sextuple until Excess[i]≦0. The coordinates of the cells corresponding to the removed sextuple are not changed.

At step 130 , overlap is removed from the subrows. Each subrow is considered individually. Overlaps are removed from each subrow, such as using the overlap removal technique described in the aforementioned Scepanovic et al. patent.

After the field x of the sextuples of S(i) is changed during overlap removal, the value of the field x saved in x old is restored for all critical sextuples of S(i). The overlap removal process described in the aforementioned Scepanovic et al. patent is repeated for the i-th subrow to reduce the shifts of the critical cells.

The cells are then considered individually to identify critical cells. The cr fields are changed for all critical sextuples and the value of the field x of this sextuple is saved in x old . Then, the overlap removal process described in the Scepanovic et al. patent is repeated for all subrows.

If the design has no dual height cells the cell placement is a legal placement. If the design includes dual height cells, an additional step 140 is performed to achieve placement of dual height cells.

The problem related to dual height cells is that two sextuples corresponding to a dual height cell can have different values of the field x after overlap removal because these sextuples are placed in the neighbor subrows and the overlap removal step is applied to the subrows independently.

All pairs of subrows where dual height cells may be placed are examined. For each pair, the procedure of the placement of dual height cells is performed to find permutations of the sextuples of the pair of subrows. More particularly, for each dual height cell, the x coordinates of two sextuples corresponding to this cell become equal and the total distance between the initial and new positions of the cells of these subrows is close to the minimum. This procedure is described more fully below in FIG. 12 . The result is a legal placement of the chip cells after the examination of all pairs.

FIG. 3 is a flow chart of the process of removing row overflow in the overlap remover. If a subrow has no cell overflow, the process described in the aforementioned Scepanovic et al. patent may be employed to remove the overlaps of the cells of the subrow. However, if cell overflow occurs, the process of FIG. 3 is employed to remove overflows from all subrows of the chip.

An auxiliary structure in the form of matrix FreeGrids[ColumnNumber][RowNumber] is created, with FreeGrids[i][j]=GridsNumber[i][j]−SumWidth[i][j], where GridsNumber[i][j] is the number of vertical grid lines belonging to the i-th column and the j-th row, SumWidth[i][j] is the total width of all cells belonging to the i-th column and the j-th row.

The chip may have some “gray boxes”. A cell is a repeater if it is a buffer or an inverter. A gray box is a region where only the repeaters can be placed. If the chip has gray boxes then a GrayBox[ColumnNumber][RowNumber] matrix is created. If the point (ColumnCoordinate[i], RowCoordinate[j]) belongs to a gray box then GrayBox[i][j]=1, otherwise GrayBox[i][j]=0.

Each row has an angle equal to 0° or 180°. If the chip has dual height cells an array. DualChar[RowNumber] is created. If the i-th row angle of the dual height cell is 180°, the (i+1)-th row angle is 0° and its outlines have a common horizontal side, then DualChar[i]=1. If the i-th row angle is 0°, the (i−1)-th row angle is 180° and its outlines have a common horizontal side, then DualChar[i]=2. Otherwise, DualChar[i]=0.

As shown in FIG. 3, the process of removing row overflow begins at step 300 with the construction of auxiliary structures described above. If a cell is located outside its function region or outside the subrows then the cell is moved to the closest subrow that belongs to the function region. The process of FIG. 3 requires several sub-processes, including selection and definition of a movement operation,

A. First Process to Compare Two Movement Operations

Subrow i has x coordinates x min (i) and x max (i). Subrow j is included in the set of number of subrows R 1 (i, m) if subrow j belongs to one of rows r−m, r−m+1, . . . , r−1 and

[ x min ( j ), x max ( j )]∩[ x min ( i ), x max ( i )]≠Ø.

Otherwise, subrow j is included in the set of numbers of subrows R 2 (i, m), if subrow j belongs to one of rows r+1, r+2, . . . , r+m and

[ x min ( j ), x max ( j )]∩[ x min ( i ), x max ( i )]≠Ø.

By definition, NeighborhoodExcess 1  ( i , m ) = ∑ j ∈ R 1  ( i ,    m )     Excess  [ j ] ,

 NeighborhoodExcess 2  ( i , m ) = ∑ j ∈ R 2  ( i ,    m )     Excess  [ j ] ,    and NeighborhoodExcess  ( i , m ) = NeighborhoodExcess 1  ( i , m ) + NighborhoodExcess 2  ( i , m ) + Excess  [ i ] .

A movement operation Φ moves some cell n from the subrow i to the subrow j or exchanges two cells n and n′ placed in the subrows i and j. Consequently, the auxiliary structures Excess[i] and Excess[j] are changed and become Excess′[i] and Excess′[j]. If a cell is moved from subrow i to subrow j, and w is the width of the cell, then

Excess′[ i ]=Excess[ i]−w , and

Excess′[ j ]=Excess[ j]+w.

If two cells of subrows i and j are exchanged, where w is the width of the first cell and w′ is the width of the second cell, then

Excess′[ i ]=Excess[ i]−w +w′ , and

Excess′[ j ]=Excess[ j]+w−w′.

If a dual height cell in the i-th and i′-th subrows is moved to the j-th and j′-th subrows, then the excesses of these four subrows are changed. By definition,

ExcessChange(Φ)=max(0, Excess[i])+max(0, Excess[ j ])−max(0, Excess′[ i] )−max(0, Excess′[ j] ).

In the dual height case,

ExcessChange(Φ)=max(0, Excess[ i] )+max(0, Excess[ j] )+max(0, Excess[ i′ ])+max(0, Excess[ j′] )−max(0, Excess′[ i] )−max(0, Excess′[ j] )−max(0, Excess′[ i′ ])−max(0, Excess′[ j′] ).

Consequently,

NeighborhoodExcessChange(Φ, m )=NeighborhoodExcess( i, m )−NeighborhoodExcess( j, m ).

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 3 of 8

If cell n is moved from row r, column c to row r′, column c′ by the movement operation Φ, then FreeGrids[c][r] and FreeGrids[c′][r′] are changed and become FreeGrids′[c][r] and FreeGrids′[c′][r′]. By definition,

FreeGridsChange(Φ). FreeGrids[c][r]+FreeGrids[ c′][r′ ]−FreeGrids′[ c][r] −FreeGrids′[ c′][r′ ], and

where (x 0 , y 0 ) is the initial position of cell n (as identified from x old and r old of the corresponding sextuple).

If Φ, Φ′are two movement operations, and NeighborhoodRadius is some integer parameter. Operation Φ is considered better than Φ′ if one of the following four conditions is satisfied:

1) ExcessChange(Φ)<ExcessChange(Φ′);

2) ExcessChange (Φ)=ExcessChange(Φ′), and NeighborhoodExcessChange(Φ, NeighborhoodRadius)<NeighborhoodExcessChange(Φ′, NeighborhoodRadius);

3) ExcessChange(Φ)=ExcessChange(Φ′), and NeighborhoodExcessChange(Φ, NeighborhoodRadius)=NeighborhoodExcessChange(Φ′, NeighborhoodRadius), and FreeGridsChange(Φ)<FreeGridsChange(Φ);

4) ExcessChange(Φ)=ExcessChange(Φ′) and NeighborhoodExcessChange(Φ, NeighborhoodRadius)=NeighborhoodExcessChange(Φ′, NeighborhoodRadius), and FreeGridsChange(Φ)=FreeGridsChange(Φ′), and DistanceChange(Φ)<DistanceChange(Φ′).

Optimal Movement of Cell from Overflowed Subrow to Neighbor Row

A movement operation p that moves cell n from row r, column c to row r′, column c′ is acceptable if the following five conditions are satisfied:

1) 0≦r′<RowNumber,

2) r old −r′≦MaxDistance,

3) 0≦c′<ColumnNumber,

4) FunctionRegion[m][c′][r′]=1, and

5) either GrayBox[c′][r′]=0 or cell n is a buffer or an inverter,

except that if cell n is a dual height cell then additionally

6) DualChar[r]=DualChar[r′], where m is the number of the cell function, r old is the initial row number of the cell (r old is taken from the sextuple corresponding to the cell), and MaxDistance is a parameter.

FIG. 4 is a flow chart of the process of optimal movement of cell n from an overflowed subrow i of row r to a neighbor row. At step 400 , a fictitious movement operation Φ 0 is created as

ExcessChange(Φ)=0,

NeighborhoodChange(Φ 0 , NeighborhoodRadius)=0.

FreeGridsChange(Φ 0 )=0, and

DistanceChange(Φ 0 )=0.

An optimal movement operation Φ opt is initialized at Φ opt =Φ 0 .

All of the sextuples of S(i) are examined individually. At step 402 , the sextuple (x, x old , r old , w, n, cr) is the currently considered sextuple with x belonging to column c. If n is an ordinal cell r′=r−1; if n is a dual height cell r′=r−2.

At step 404 , a movement operation Φ is considered that moves cell n to row r′, column c. If Φ is an acceptable movement at step 406 , Φ and Φ opt are compared at step 408 to identify if Φ is better than Φ opt , as describe in Section A. If Φ is better than Φ opt then Φ opt is set to Φ.

There are two possible movement operations that move the cell to a neighbor row. At step 410 Φ is a first movement operation if r′=r−1 or r′=r−2, and the process skips to step 412 . At step 412 , r′ is set to r+1 if n is an ordinal cell or r′ is set to r+2 if n is a dual height cell. A movement operation Φ is considered that moves cell n to row r′, column c, and the process loops back to step 406 . At step 410 Φ is a second movement operation if r′=r+1 or r′=r+2, and the process skips to step 414 .

If at step 414 sextuples remain to be considered, a new sextuple is considered at step 416 and the process loops back to step 404 . The process continues to loop through steps 404 - 414 until all of the sextuples have been considered.

When all of the sextuples have been considered through step 414 , the process continues to step 418 where the procedure returns 0 if Φ opt =Φ 0 . If Φ opt ≠Φ 0 , the procedure returns Φ opt .

C. Optimal Exchange of Two Cells of Neighbor Rows

The flow chart of FIG. 4 can also be used to describe the process of an optimal exchange of two cells n and n′ between neighbor rows r and r′. At step 400 , the fictitious movement Φ 0 is defined, and the optimal movement operation Φ opt is initialized as described above.

All of the sextuples of S(i) are examined individually. At step 402 , the sextuple (x, x old , r old , w, n, cr) is the currently considered sextuple with x belonging to column c. If n is an ordinal cell r′ =r−1; if n is a dual height cell r=r′−2. Subrow j contains point (ColumnCoordinate[c], RowCoordinate[r′]). If (x′, x′ old , r′ old , w′, n′, cr′) is a sextuple of S(j) and Φ is a movement operation that moves cell n to row r′, column c, and that moves cell n′ to row r, column c, then the exchange movement operation Φ is possible for cell n if x′ belongs to column c.

At step 404 , a first possible movement operation Φ is considered. The process of steps 406 - 412 is repeated as described above for each possible exchange movement operation. At step 410 , if r′=r−1 or r′=r−2 and all possible movement operations are considered, then r′ is set to r+1 if n is an ordinal cell, or to r+2 if n is a dual height cell, and the process loops back to step 406 . If at step 410 r′=r+1 or r′=r+2 and all possible movement operations are considered, then the process skips to step 414 .

When all of the sextuples have been examined through step 414 , the process continues to step 418 where the procedure returns 0 if Φ opt =Φ 0 . If Φ opt ≠Φ 0 , the procedure returns Φ opt .

D. Second Process to Compare Two Movement Operations

If a movement operation Φ moves cell n having a width w, then Width Changer(Φ)=w. If Φ′ exchanges cells n and n′ having a width w′, then Width Change(Φ)=w−w′. An integer W and movement operations Φ and Φ′ are inputs of the process.

If WidthChange(Φ)<0, then Φ is worse than Φ′. If WidthChange(Φ)≧0 calculate d=|W-WidthChange(Φ)|−W-WidthChange(Φ′)|.

If d<0 then Φ is better than Φ′. If d>0 then Φ′ is better than Φ. If d=0 then operation Φ is better than Φ′ if one of the following conditions is satisfied

1) DistanceChange(Φ)<DistanceChange(Φ′);

2) DistanceChange(Φ)=DistanceChange(Φ′) and ExcessChange(Φ)<ExcessChange(Φ′).

E. Rough Shifting Subrow Overflows

If Excess[i]≦0 there is nothing to do and the procedure ends, where i is the input subrow.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 4 of 8

Otherwise, m 1 is the minimal integer such that NeighborhoodExcess 1 (i, m 1 )+Excess[i]≦0. If NeighborhoodExcess 1 (i, m 1 )+Excess[i]>0 for all m then m 1 =∞. m 2 is the minimal integer such that NeighborhoodExcess 2 (i, m 2 )+Excess[i]≦0. If NeighborhoodExcess 2 (i, m 2 )+Excess[i]>0 for all m then m 2 =∞. If m 1 =∞ and m 2 =∞, the procedure ends.

Otherwise, dir is set equal to −1 if m 1 <m 2 or to +1 otherwise. As shown by the flow chart of FIG. 5, at step 500 , j is set equal to i. At step 502 , the processes to choose the optimal movement operation described above are applied to subrow j. The procedure described in Section D is used with the procedures described in Sections B and C, and Excess[j] is used as the input parameter W of procedure described in Section D. If at step 504 both procedures described in Sections B and C return 0, the process skips to step 510 . Otherwise, at step 506 , the chosen optimal movement operation is performed and the corresponding items of the auxiliary structures, particularly Excess[j] are changed. At step 508 , if Excess[i]>0 the process returns to step 502 . Otherwise, at step 510 j is set equal to j+dir. If at step 512 j<0 or j≧N, where N is the number of subrows, the process ends. Otherwise the process loops back to step 502 .

F. Optimal Movement of Cell from Overflowed Subrow to Neighbor Subrow Where Both Subrows Belong to the same Row

FIG. 6 is a flow chart of the operation to select the optimal movement of a -cell from an overflowed subrow to a neighbor subrow, where both subrows belong to the same row. At step 600 , the optimal movement operation Φ opt is initialized as Φ 0 , where Φ 0 is the fictitious movement operation as described above. At step 602 , c is set to the minimal number such that the point (ColumnCoordinate[c], RowCoordinate[r]) belongs to the subrow i. P(i) ⊂ S(i) is a set of sextuples (x, x old , r old , w,n, cr) such that x belongs to one of columns c, c+1, . . . , c+1, . . . , c+MaxDistance−1. Subrow j of row r has x coordinates that are less than the x coordinates of subrow i, and subrow j is a neighbor of subrow i. If number j exists, c″ is set to the maximal number such that the point (ColumnCoordinate [c″], RowCoordinate[r] belongs to the subrow j.

If number j exists, all the sextuples of P(i) are examined at steps 604 - 608 . Let (x, x old , r old , w, n, cr) be the currently considered sextuple. At step 606 , the movement operation Φ is selected that moves cell n to row r, column c″. At step 608 , if Φ is an acceptable operation, then Φ and Φ opt are compared as described above. If Φ is better than Φ opt then Φ opt is set equal to Φ.

At step 610 , c′ is set as the maximal number such that point (ColumnCoordinate[c′], RowCoordinate[r]) belongs to the subrow i. P′(i) ⊂ S(i) is a set of sextuples (x, x old , r old , w, n, cr) such that x belongs to one of columns c′-MaxDistance+1, c′-MaxDistance+2, . . . , c′. Subrow j′ of row r has x coordinates that are greater than the x coordinates of subrow i, and subrow j′ is a neighbor of subrow i. If number j′ exists, c″ is set to the minimal number such that the point (ColumnCoordinate[c″], RowCoordinate[r]) belongs to the subrow j′.

If number j′ exists, then all the sextuples of P′(i) are examined at steps 612 - 6 - 6 . Let (x, x old , r old , w, n, cr) be the currently considered sextuple. At step 614 , the movement operation Φ is selected to move cell n to row r, column c″. At step 616 , if this is an acceptable operation, then Φ and Φ opt are compared as described above, and if Φ is better than Φ opt then Φ opt is set equal to Φ.

At step 618 , if Φ opt =Φ 0 after the examination of all the sextuples of P(i) and P′(i) then the procedure returns 0, otherwise the procedure returns Φ opt .

G. Optimal Exchange of Two Cells of Neighbor Subrows of One Row

This process is similar to that described in Section F, and seeks the optimal exchange of, two cells n and n′ between neighbor subrows i and j of a single row r. As in the prior cases, the optimal movement operation Φ is set equal to Φ 0 , where Φ 0 is the fictitious movement operation described above. Let c be the minimal number such that point (ColumnCoordinate[c], RowCoordinate[r]) belongs to subrow i, and P(i) ⊂ S(i) is a set of sextuples (x,x old , r old , w, n, cr) such that x belongs to one of the column c, c+1, . . . , c+MaxDistance−1. Subrow j belongs to the row r, and has x coordinates that are less than the x coordinates of subrow i, and subrow j is a neighbor of subrow i.

If number j exists, then the maximal number d is found such that point (ColumnCoordinate [d], RowCoordinate[r]) belongs to subrow j. This is accomplished from a set Q(j) of sextuples (x,x old , r old , w, n, cr), where Q(j) ⊂ S(j), such that x belongs to one of the columns d-MaxDistance+1, d-MaxDistance+2, . . . , d. All sextuples of P(i) are examined. With (x, x old , r old , w, n, cr) the currently considered sextuple, all the sextuples (x, x′ old , r′ old , w′, n′, cr′) of Q(j) are examined and the movement operation Φ is considered such that Φ exchanges cells n and n′. If Φ is an acceptable operation then Φ and Φ opt are compared as described above. If Φ is better than Φ opt , Φ opt is set equal to Φ.

Let c′ be the maximal number such that point (ColumnCoordinate[c′], RowCoordinate[r]) belongs to subrow i. P′(i) ⊂ S(i) is a set of sextuples (x, x old , r old , w, n, cr) such that x belongs to one of the columns C′-MaxDistance+1, c′-MaxDistance+2, . . . , c′. Subrow j′ belongs to row r and has x coordinates that are greater than the x coordinates of subrow i, and subrow j′ is a neighbor of subrow i.

If number j′ exists then the minimal number d′ is found such that point (ColumnCoordinate [d′], RowCoordinate[r]) belongs to subrow j′. Q′(j′) ⊂ S(j′) is a set of sextuples (x, x old , r old , w, n, cr) such that x belongs to one of columns d′, d′+1, . . . , d′+MaxDistance−1. All the sextuples of P′(i) are examined, with (x, x old , r old , w, n, cr) being the currently considered sextuple. All the sextuples (x′, x′ old , r′ old , w′, n′, cr′) of Q′(j′) are examined, and the movement operation Φ is considered such that Φ exchanges the cells n and n′. If Φ is an acceptable operation and Φ is better than Φ opt , then set Φ opt =Φ.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 5 of 8

If Φ opt =Φ 0 after the examination of all the sextuples of P(i) and P′(i) then the procedure returns 0, otherwise the procedure returns Φ opt .

H. Far Movement of Non-critical Cells

Non-critical cells may be moved farther than to neighboring subrows. FIG. 7 is a flow chart of this process. At step 700 , if Excess[i]≦0 or set S(i) does not contain any non-critical sextuple, the process ends, where i is the number of the input subrow. Otherwise, at step 702 a non-critical sextuple (x, x old , r old , w, n, cr)εS(i) is randomly chosen, i.e., cr=0. Assuming that x belongs to column c, at step 704 all points of the lattice are examined starting from the point (c, r) and moving in a spiral 800 as illustrated in FIG. 8, for example first along row r to point (c−1, r), thence to point (c, r+1), thence to point (c+1, r), thence to point (c, r−1), thence to point (c−2, r), etc. through the lattice. At step 706 , if the currently considered point (c′, r′) belongs to subrow j, and if Excess[j]+w≦0 then cell n is moved to subrow j and the corresponding items of the auxiliary structures, in particular Excess[i], Excess[j], S(i), S(j) and others, are changed.

At step 708 if there are additional non-critical sextuples remaining and Excess[i]>0, the process loops back to step 702 and is repeated for all non-critical sextuples of S(i).

Returning to FIG. 3, the process to remove subrow overflow may be more fully explained. MaxDist is the maximal value of the parameter MaxDistance. In preferred embodiments MaxDist is set equal to 3. MaxNeighborhoodRadius is the maximal value of the parameter NeighborhoodRadius. In preferred embodiments MaxNeighborhoodRadius is set equal to min(RowNumber/3, 10). After the auxiliary structures are: completed at step 300 , at step 302 MaxDistance and RoughShiftFlag are initialized to 1 and NeighborhoodRadius is initialized to 0. At step 304 , all overflowed subrows are examined using the process to choose optimal movement of cell from overflowed subrow to neighbor row described in Section Band the process to choose optimal exchange of two cells of neighbor rows described in Section C. These processes are applied to each subrow i. If one of these procedures finds some movement operation, then that movement operation is applied to the cell(s) and the corresponding items of the auxiliary structures are changed.

At step 306 , if there are overflowed subrows and the procedures to choose the optimal movement operation return 0 for all overflowed subrows in step 304 , then the value of NeighborhoodRadius is incremented by 1. At step 308 , if the new value of NeighborhoodRadius<MaxNeighborhoodRadius then the process loops back to step 304 . (Steps 306 and 308 effectively increase the size of a subrow up to a limit dictated by the value of MaxNeighborhoodRadius.) Otherwise, if at step 310 all overflows have been removed, the process exits at step 312 . If all overflows have not been removed, at step 314 if RoughShiftFlag=1 then the process of rough shifting of subrow overflows described in Section E is applied to each subrow, RoughShiftFlag and NeighborhoodRadius are set to 0, and the process loops back to step 304 .

If RoughShiftFlag=0 at step 314 , then all overflowed subrows are randomly examined. The process to choose optimal movement of a cell from an overflowed subrow to a neighbor subrow described at Section F and the process to choose an optimal exchange of two cells of neighbor subrows described at Section G is applied if both subrows belong to one row. At step 316 , if a movement operation is found, the operation is applied and the corresponding items of the auxiliary structures are changed.

At step 318 , if overflowed subrows are removed, the process ends. If at step 318 overflowed subrows remain and the procedures applied at step 316 return 0 for all overflowed subrows, then MaxDistance is set equal to MaxDistance+1. At step 320 , if MaxDistance≦MaxDist, RoughShiftFlag is set to 0, NeighborhoodRadius is set to 1, and the process loops back to step 304 .

If at step 320 MaxDistance>MaxDist, the process of far movement of non-critical cells described at Section H is applied at step 322 to all subrows, and the process ends.

In most cases, the process to choose optimal movement of a cell from an overflowed subrow to a neighbor row and the process to choose an optimal exchange of two cells of neighbor rows, applied in step 304 allow selection of a vertical movement operation. For most designs these processes are all that is necessary to remove all overflows. Step 314 is usually necessary only if the design has many blockages and fixed cells. Step 320 is rarely executed.

I. Placement of Dual Height Cells

It is important to correctly place the dual height cells of the chip. A dual height cell is placed in two neighbor rows if their outlines have a common horizontal side. As describe above, a dual height cell is a pair of half-cells, and each half-cell is placed in one row. Overlap removal is applied to each row of the chip independently. As a result, there are no cell overlaps in the rows but some half-cells corresponding to a dual height cell might have different x coordinates. The following is a process that finds permutations of the elements of two neighbor rows such that the x coordinates of each half-cell corresponding to one dual height cell become equal and the total distance between the initial and new positions of the cells of these rows is minimized.

The overlap remover described above treats each cell as a rectangle (x 1 , y 1 , x 2 , y 2 ), called the outline of the cell. The value x 2 −x 1 is the width of the cell. The value y 2 −y 1 is the height of the cell. Usually all ordinal cells have the same height. The width of the cells may be different.

Each row has a specific characteristic called an angle. An angle can be equal to 0° or 180°. The angles of all ordinal cells belonging to some row must be equal to the angle of the row. Two rows (X 1 , Y 1 , X 2 , Y 2 ) and ({tilde over (X)} 1 , {tilde over (Y)} 1 , {tilde over (X)} 2 , {tilde over (Y)} 2 ) are neighbors if Y 2 ={tilde over (Y)} 1 , X 1 <{tilde over (X)} 2 , {tilde over (X)} 1 <X 2 , the angle of the first row is 180°, and the angle of the second row is 0°. A dual height cell may be placed only in two neighbor rows. A pair of the rows is suitable if these rows are neighbors and a dual height cell is placed in these rows.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 6 of 8

Consider a suitable pair of rows and a dual height cell placed in these rows. The above described overlap remover presents a dual height cell as two rectangles (so-called half-cells) such that each rectangle has the height equal to the height of the row, the first rectangle is placed in the first row of the pair, and the second rectangle is placed in the second row. Trying to remove cell overlaps in these rows the overlap remover is applied to each row of the pair independently. After this step no cell overlaps inside the rows but some half-cells corresponding to a dual height cell can have different x coordinates.

A permutation of elements of a suitable pair is called correct if after this permutation the x coordinates of half-cells corresponding to this dual height cell become equal. A correct permutation permits cells and half-cells inside rows.

The problem is to find a correct permutation of elements of a row pair. An example where a correct permutation does not exist is given in FIG. 9, where row r contains ordinal cell 900 and half-cells 902 and 904 of dual-height cells 2 and 3 , and row r′ contains ordinal cell 906 and half-cells 908 and 910 of dual-height cells 2 and 3 . In this case, no shifting of cells will permit alignment of cell 902 to cell 908 or of cell 904 to cell 910 .

A pair of neighbor rows (X 1 , Y 1 , X 2 , Y 2 ), ({tilde over (X)} 1 , {tilde over (Y)} 1 , {tilde over (X)} 2 , {tilde over (Y)} 2 ) is aligned if X 1 ={tilde over (X)} 1 or X 2 ={tilde over (X)} 2 . If a suitable pair (X 1 , Y l , X 2 , Y 2 ), ({tilde over (X)} 1 , {tilde over (Y)} 1 , {tilde over (X)} 2 , {tilde over (Y)} 2 ) is aligned then a correct permutation does exist. Indeed, if X 1 ={tilde over (X)} 1 then all the dual height cells can be moved to the left parts of the rows and place the ordinal cells after (to the right of) the dual height cells. In the case X 2 ={tilde over (X)} 2 all dual height cells can be moved to the right parts of the rows. An example of a correct permutation of elements of a row pair is given in FIG. 10 . Here, half-cells 1000 and 1002 of row r and half-cells 1004 and 1006 in row r′, which form dual-height cells 2 and 3 , can be shifted to the left of ordinal cells 1008 and 1010 to align the half-cells.

If a suitable pair is aligned a correct permutation can be found. Moreover, the total distance between initial positions of the cells of the pair and new positions of the cells is close to the minimum among corresponding total distances of all correct permutations.

A triple (x, w, n) is assigned to each cell or half-cell(x 1 , y 1 , x 2 , y 2 ), where x=x 1 , w=x 2 −x 1 , and n is the cell number in the chip cell list. A suitable pair R of rows (X 1 , Y 1 , X 2 , Y 2 ) and ({tilde over (X)} 1 , {tilde over (Y)} 1 , {tilde over (X)} 2 , {tilde over (Y)} 2 ) are selected. Two lists L 1 ={(x 1 , w 1 , n 1 ), . . . , (x m 1 , w m 1 , n m 1 )} and L 2 ={({tilde over (x)} 1 , {tilde over (w)} 1 , ñ 1 ), . . . , ({tilde over (x)} m 2 , {tilde over (w)} m 2 , n m 2 )} are assigned to the pair R, where m 1 , m 2 are the numbers of the cells and half-cells of the first and second rows of the pair respectively, L 1 is the list of the triples corresponding to the cells and half-cells of the first row and x 1 <x 2 < . . . <x m 1 , L 2 is the list of the triples corresponding to the cells and half-cells of the second row and {tilde over (x)} 1 <{tilde over (x)} 2 < . . . <{tilde over (x)} m 2 . P 1 and P 2 are permutations of the lists L 1 and L 2 respectively such that P 1  ( L 1 ) = { ( x p 1 , w p 1 , n p 1 ) , …    , ( x p m 1 , w p m 1 , n p m 1 ) }     and P 2  ( L 2 ) = { ( x ~ r , w ~ r 1 , n ~ r 1 ) , …    , ( x ~ r m 1 , w ~ r m 2 , n ~ r m 2 ) } .

These permutations are expressed as P 1 =(p 1 , . . . , p m 1 ) and P 2 =(r 1 , . . . , r m 2 ). The assumption is made that the orders of the dual height cells in both rows after the action of the permutations P 1 and P 2 coincide. Let ( x p k 1 , w p k 1 , n p k 1 )

be the first triple corresponding to a dual height cell in the list P 1 (L 1 ), and ( x ~ r k 2 , w ~ r k 2 , n ~ r k )

be the first triple corresponding to a dual height cell in the list P 2 (L 2 ). By assumption, n p k 1 = n ~ r k 2 = n .

Let x be a desirable position of the cell n (for example, consider x = ( x p k 1 + x ~ r k 2 ) / 2 ) .

The triple V=(P 1 (L 1 ), P 2 (L 2 ), x) is called a version of the pair R.

Four values are calculated for a version V of pair R: BeforeFreeSpace 1  ( V ) = x - X 1 - ∑ i = 1 k 1 - 1     w p i ,

 AfterFreeSpace 1  ( V ) = X 2 - x - ∑ i = k 1 m 1     w p i ,

 BeforeFreeSpace 2  ( V ) = x - X ~ 1 - ∑ i = 1 k 2 - 1     w ~ r i ,    and AfterFreeSpace 2  ( V ) = X ~ 2 - x - ∑ i = k 2 m 2     w ~ r i .

Since there are no overflows in the rows,

BeforeFreeSpace 1 ( V )+AfterFreeSpace 1 ( V )≧0, and

BeforeFreeSpace 2 ( V )+AfterFreeSpace 2 ( V )≧0.

A version V is “good” if BeforeFreeSpace 1 ( V )≧0, BeforeFreeSpace 2 ( V )≧0, AfterFreeSpace 2 ( V )≧0, and x p 1 < x p 2 < … < x p k 1 - 1 , x p k 1 + 1 < x p k 1 + 2 < … < x p m 1 , x ~ r 1 < x ~ r 2 < … < x ~ r k 2 - 1 , x ~ r k 2 + 1 < x ~ r k 2 + 2 < … < x ~ r m 2 .

1. Calculation of a Penalty

The penalty of a version is calculated using a version V=(L 1 , L 2 , x) of a suitable pair R of rows as an input. If L 1 ={(x 1 , w 1 , n 1 ), . . . , (x m , w m , n m )} and (x k , w k , n k ) is the first triple corresponding to a dual height cell in list L 1 , set x i ′ = min  { x i ′  x - ∑ j = 1 k - 1     w j }

for i=1, . . . , k−1; X′ k =x; and x i ′ = max  { x + ∑ j = k i - 1     w j , x i }

for i=k+1, . . . , m. The defined value x′ 1 is the new position of the i-th triple of the list L 1 . The distance between old and new positions is Penalty 1 = ∑ i = 1 m      x i - x i ′  .

The new positions of the cells of the second row of the pair and Penalty 2 = ∑ i = 1 m      x ~ i - x ~ i ′ 

is calculated in a similar fashion. The value Penalty 1 +Penalty 2 is the penalty of version V of the pair R.

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 7 of 8

2. Moving an Ordinal Cell

The movement of one ordinal cell is calculated from a version V=(L 1 , L 2 , x) of a suitable pair R of rows, the current optimal version V opt of the pair R, and the penalty Pen opt of the version V opt . If L 1 ={(x 1 , w 1 , n 1 ), . . . , (x m 1 , w m 1 , n m 1 )}, L 2 ={({tilde over (x)} 1 , {tilde over (w)} 1 , ñ 1 ), . . . , ({tilde over (x)} m 2 , {tilde over (w)} m 2 , ñ m 2 )}, assume (x k 1 , w k 1 , n k 1 ) is the first triple corresponding to a dual height cell in list L 1 , and ({tilde over (x)} k 2 , {tilde over (w)} k 1 , ñ k 2 ) is the first triple corresponding to a dual height cell in list L 2 . Assume also that P 1 and P 2 are the identical permutations, i.e. P 1 =(1, 2, . . . , m 1 ), P 2 =(1, 2, . . . , m 2 ). If BeforeFreeSpace 1 (V)≧0, and AfterFreeSpace 1 (V)≧0, and BeforeFreeSpace 2 (V)≧0, and AfterFreeSpace 2 (V)≧0 exit from the procedure.

Initially, an attempt is made to move an ordinal cell to the right if BeforeFreeSpace 1 (V)>0 and BeforeFreeSpace 2 (V)≦0, or if BeforeFreeSpace 2 (V)>0 and BeforeFreeSpace 1 (V)≦0. Set n=1 if BeforeFreeSpace 1 (V)≦0 and set n=2 otherwise. It is clear that AfterFreeSpace n (V)≧0. Set n′=max(0,−AfterFreeSpace 3−n (V)). A value of n′>0 means the dual height cell n k 1 should be moved left by n′ to increase AfterFreeSpace 3−n (V).

Set W max =AfterFreeSpace n (V). If the width of the ordinal cell is more than W max then this cell can not be moved right, because AfterFreeSpace n (V) becomes less than 0.

Set W min =BeforeFreeSpace n (V)=n′. If the width of the ordinal cell is less than W min then this cell can not be moved right, because BeforeFreeSpace n (V) or AfterFreeSpace 3−n (V) remains less than 0.

If W max ≧W min the triples of list L n are examined starting from i=k n −1 and moving to 1. If w i ≦W max and w i ≧W min then a suitable cell is found. Set P n =(1, . . . , i−1, i+1, . . . , k n , i, k n +1, . . . , m n ), and apply calculate the penalty of version V′=(P 1 (L 1 ), P 2 (L 2 ), x−n′). Let Pen′ be the result of this procedure. If Pen′<Pen opt then set Pen opt =Pen′ and V opt =V′. Then the loop is ended. The output of this step is Pen opt and V opt .

If W max <W min , or W i <W min or w i >W nax for all i=1, . . . , k n −1 a suitable cell can not be found to move right. Accordingly, set P 1 =(1, 2, . . . , m 1 ), P 2 =(1, 2, . . . , m 2 ) and try to move an ordinal cell left in a similar manner.

3. Moving a Dual Height Cell

A dual height cell is moved using a suitable pair R. Let L 1 ={(x 1 , w 1 , n 1 ), . . . , (x m 1 , w m 1 , n m 1 )} and L 2 ={({tilde over (x)} 1 , {tilde over (w)} 1 , ñ 1 ), . . . , ({tilde over (x)} m 2 , {tilde over (w)} m 2 , ñ m 2 )} be the lists corresponding to the pair R, and assume that the orders of the numbers of the dual height cells in both lists are the same. Let (x k 1 , w k 1 , n k 1 ) be the first triple corresponding to a dual height cell in list L 1 and ({tilde over (x)} k 2 , {tilde over (w)} k 2 , ñ k 2 ) be the first triple corresponding to a dual height cell in list L 2 . By assumption n k 1 =ñ k 2 =n.

The current optimal good version is V opt , the penalty of version V opt is Pen opt , the current penalty is Pen cur , the current version is V, and a permutation is P. The process is illustrated in the flow chart of FIG. 11 .

At step 1100 , Pen opt and Pen cur are initialized at 0.

First, an attempt will be made to move dual height cell n to the left. At step 1102 , set x=(x k 1 +{tilde over (x)} k 2 )/2, V=(L 1 , L 2 , x), b 1 =BeforeFreeSpace 1 (V), b 2 =BeforeFreeSpace 2 (V), a 1 =AfterFreeSpace 1 (V), a 2 =AfterFreeSpace 2 (V), and at step 1104 set mb=min{b 1 , b 2 }, and ma=min{a 1 , a 2 }. If, at step 1106 , ma≧0 and mb≧0 then the current version V is a good version. The penalty, Pen, of version V is calculated. If Pen+Pen cur <Pen opt , set Pen opt =Pen+Pen cur and V opt =V and exit from the procedure.

If mb>0 dual height cell n can be moved left. At step 1108 set d=−ma if −ma<mb and d=mb otherwise. Set x=x−d, Pen cur =Pen cur +2d to move dual height cell n left by d. If Pen cur ≧Pen opt , exit from the procedure because version V opt is better than version V. Otherwise set b 1 =b 1 −d, b 2 =b 2 −d, a 1 =a 1 +d, a 2 =a 2 +d and return to step 1104 .

At step 1110 the process to move one ordinal cell described in section 2 is applied to versions V=(L 1 , L 2 , x), V opt and penalty Pen opt . Set ChangeFlag=0, and the placement of the ordinal cells with respect to the dual height cell is identified. If b 1 >0 and a 1 <0 then the triples of the list L 1 are examined starting from k 1 +1 to find the first triple corresponding to an ordinal cell. If this triple exists it is denoted by j. If w j ≦b 1 set P=(1, . . . , k 1 −1, j, k 1 , . . . , j−1, j+1, . . . , m 1 ), b 1 =b 1 −w j , a 1 =a 1 +w j , L 1 +P(L 1 ), and ChangeFlag=1. This means that the ordinal cell n j is placed before the dual height cell n.

If b 2 >0 and a 2 <0 then the triples of list L 2 are examined starting from k 2 +1 to find the first triple corresponding to an ordinal cell. If this triple exists it is denoted by j. If {tilde over (w)} j ≦b 2 then P=(1, . . . , k 2 −7, j, k 2 , . . . , j−1, j+1, . . . , m 2 ), b 2 =b 2 −{tilde over (w)} j , a 2 =a 2 +{tilde over (w)} j , L 2 =P(L 2 ), and ChangeFlag=1. This means that the ordinal cell ñ j is placed before the dual height cell n. If ChangeFlag=1 then return to step 1104 .

If b 1 ≦0 and k 1 >1 then set P=(1, . . . , k 1 −2, k 1 , k 1 −1, . . . , m 1 ), b 1 =b 1 +{tilde over (w)} k 1 −1 , a 1 =a 1 −{tilde over (w)} k 1 −1 , L 1 =P(L 1 ) and ChangeFlag=1. This means that the ordinal cell ñ k 1 −1 is placed after the dual height cell n.

If b 2 ≦0 and k 2 >1 then set P=(1, . . . , k 2 −2, k 2 , k 2 −1, m 2 ), b 2 =b 2 +{tilde over (w)} k 2 −1 , a 2 =a 2 −{tilde over (w)} k 2 −1 , L 2 =P(L 2 ) and ChangeFlag=1. This means that the ordinal cell n is placed after the dual height cell n. If ChangeFlag=1 then return to step 1104 . If ChangeFlag=0, exit from the procedure. The results of this procedure are output at step 1112 as Pen opt and V opt .

›DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS · 8 of 8

The initial lists L 1 and L 2 , and the values k 1 , k 2 are restored and the process is repeated to try to move the dual height cell n right in a similar way.

A result of Pen opt =∞ means that a good version of the pair R cannot be found. It is clear that if the pair R is aligned then Pen opt <∞. If Pen opt <∞ then V opt =(L 1 , L 2 , x) is a good version of the pair R, V opt have the minimal (or close to minimal) penalty, the half-cells corresponding to the dual height cell n are aligned, and their positions are equal to x.

4. Placement of Dual Height Cells

FIG. 12 is a flow chart of this procedure. At step 1200 , the procedure for movement of a dual height cell described in Section 3 is applied to each suitable pair R of the rows (X 1 , Y 1 , X 2 , Y 2 ), {tilde over (X)} 1 , {tilde over (Y)} 1 , {tilde over (X)} 2 , {tilde over (Y)} 2 ). At step 1202 , if Pen opt =∞ then a legal placement for the first dual height cell of pair R cannot be made so this cell is removed from pair R. If at step 1204 R remains to be suitable the procedure for movement of a dual height cell of Section 3 is applied to pair R again. If Pen opt <∞ at step 1206 , calculate new coordinates of all cells for the version V opt =(L 1 , L 2 , x) as described in procedure to calculate a penalty in Section 1 above and set these new coordinates. Set L 1 ={(x 1 , w 1 , n 1 ), . . . , (x m 1 , w m 1 , n m 1 )} and L 2 ={({tilde over (x)} 1 , {tilde over (w)} 1 , ñ 1 ), . . . , ({tilde over (x)} m 2 ; {tilde over (w)} m 2 , ñ m 2 )}. Let (x k 1 , w k 1 , n k 1 ) be the first triple corresponding to a dual height cell in list L 1 , and ({tilde over (x)} k 2 , {tilde over (w)} k 2 , ñ k 2 ) be the first triple corresponding to a dual height cell in list L 2 . It is clear that x k 1 ={tilde over (x)} k 2 =x. At step 1208 , a new pair R′ of aligned rows (x+w k 1 , Y 1 , X 2 , Y 2 ) and (x+{tilde over (w)} k 1 , {tilde over (Y)} 1 , {tilde over (X)} 2 , {tilde over (Y)} 2 ) is considered. Lists L′ 1 ={(x k 1 +1 , w k 1 +1 , n k 1 +1 ), . . . , (x m 1 , w m 1 , n m 1 )} and L′ 2 ={({tilde over (x)} k 2 +1 , {tilde over (w)} k 2 +1 , ñ k 2 +1 ), . . . , ({tilde over (x)} m 2 , {tilde over (w)} m 2 , ñ m 2 )} are assigned to pair R′. If R′ is a suitable pair then the procedure for movement of a dual height cell is applied to pair R′ again while R′ is a suitable pair.

Legal placement of the chip is achieved after consideration of all suitable pairs of rows.

The present invention thus provides processes for placement of cells in integrated circuit chips to remove cell overlap, row overflow and optimize the placement of dual height cells. The invention is particularly useful in hierarchical design processes where dual height cells are employed.

In preferred embodiments, the invention is carried but by a computer operating under the control of a computer readable program. A memory medium, such as a recording disk of a disk drive, contains the computer readable program consisting of computer readable program code that defines the parameters of the process and of the chip and cells and controls the computer to carry out the processes of the invention.

Although the present invention has been described with reference to preferred embodiments, workers skilled in the art will recognize that changes may be made in form and detail without departing from the spirit and scope of the invention.

Claims as granted

25 claims

Log in to read the claims of this application.

Log in to unlock

Classifications

4 codes
IPC · International Patent Classification
Section G — Physics
  • G06F17/50
USPC · US Patent Classification
716/10716/9716/11

Claim changes

Soon
Coming soonHow the claims changed between publication and grant

See which claims were amended, added or cancelled during examination, with every added and removed word marked.

AmendedAddedCancelledUnchanged

The published claims of this application are not paired with the granted ones in what we hold.

File wrapper

⤢ drag to zoomOct 2001Jan 2002Apr 2002Jul 2002Oct 2002Jan 2003Apr 2003Jul 2003Oct 2003USPTOApplicantNon-final rejectionNotice of allowance
USPTOApplicanthover for detail · click to open
Pendency
2.0 y
741 days filing → grant
Office actions
1
non-final + final
Responses
1
no RCE
Examiner
Vuthe Siek
art unit 2825 · TC 2800
Citations: 7 back · 12 forward

See the full prosecution history — every USPTO and applicant action on this file, in order.

Log in to unlock

Documents

Log in to open the documents of this file: the application as filed, every office action and response, the notice of allowance.

Log in to unlock

Chain of title

⤢ drag to zoom20022004200620082010201220142016201820202022Owner 1Owner 3Owner 4liens, releases & corrections
TitleLienReleasehover for detail · click to open

See the full assignment history — every owner this patent has passed through, with recordation dates and reel/frame numbers.

Log in to unlock