Abstract:
A method for generating a layout of a rectangular block of cells for use with other rectangular blocks of cells in an integrated circuit. In the preferred embodiment, the method includes the steps of providing a set of component circuit cells, each of the cells being of generally rectangular shape with predefined dimensions and, then, concatenating the component cells with at least one expandable cell space between non-abutting adjacent edges of at least two of the elements such that the boundary of the concatenated set defines a block of cells having a generally rectangular shape which is coterminous with a second, predefined generally rectangular block of cells.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     The present invention generally relates to integrated circuits and, more particularly, to a method for laying-out designs of large scale and very large scale integrated circuits. 
     2. State of the Art 
     Integrated circuit modules can either be custom designed or can be designed by using a module generation technique such as a slice composition model. Although custom designs of integrated circuits often result in highly efficient use of silicon substrates, such designs are costly and time-consuming in terms of engineering. 
     In the art of designing integrated circuits, it is known that the slice composition method is particularly useful for laying out designs of integrated circuits which repeatedly use similar or identical circuit modules. Some examples of integrated circuits which are often designed by the slice composition technique are read only memories (ROM&#39;s), random access memories (RAM&#39;s), and programmable logic arrays (PLA&#39;s), and their use in application specific integrated circuits (ASIC&#39;s). 
     In the slice composition technique, frequently-used elements, or &#34;cells,&#34; are often referred to as &#34;tiles&#34; or &#34;leaves&#34;. The modular component cells are known as tiles because, by analogy to mosaic patterns formed of ceramic tiles, they can be placed adjacent to one another to form larger patterns. The modular cells are also known as leafs because, by analogy to the leafs of a tree, they form the lowest component in a hierarchy. For present purposes, patterns formed of modular cells will be called &#34;blocks&#34;. And it should be understood that a block composed of a group of cells may be used as a module in a larger block.) Since individual types of cells are often used repetitively in a circuit design, the particular occurrence of a cell is called an &#34;instance&#34;. 
     In conventional procedural layout methods, the spatial orientation of each cell must be designated by its specific cartesian coordinates. That is, conventional procedural layout methods require a detailed specification of the spatial orientation of cells. According to such conventional methods, once cells are positioned, they are interconnected. Thus, one drawback of such methods is that misplacements of cells or their routing lines can result in faulty operation of the resulting integrated circuit, even though the misplacements are barely perceptible to a circuit design engineer. 
     Typically, different types of modular cells are not uniform in size and therefore, do not fit together without some spatial adjustments. That is, when different types of cells are compiled to form a block, the ports of the cells will usually not be in alignment nor will the sides of the cells uniformly abut. To overcome this latter difficulty, it is known to employ a technique, known as composition wherein cells are stretchable; that is, according to this technique the size of the cells is expanded or shrunk as required to fill the area of interest in an integrated circuit. The main drawback of such methods is that they do not efficiently utilize space on a silicon substrate. 
     SUMMARY OF THE INVENTION 
     A method for generating a layout of a rectangular block of cells for use with other rectangular blocks of cells in an integrated circuit. In the preferred embodiment, the method comprises the steps of providing a set of component circuit cells, each of the cells being of generally rectangular shape with predefined dimensions and, then, concatenating the component cells with at least one expandable cell space between non-abutting adjacent edges of at least two of the elements such that the boundary of the concatenated set defines a block of cells having a generally rectangular shape which is coterminous with a second, predefined generally rectangular block of cells. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The present invention may be more fully understood by considering the following detailed description in conjunction with the drawings, in which; 
     FIGS. 1(a) and 1(b) depict a typical transistor; 
     FIG. 2 depicts a block formed by two slices, each slice composed of a number of cells; 
     FIG. 3 depicts a block including a stretchable white space cell; 
     FIG. 4 depicts a circuit block including a stretchable wire routing cell; 
     FIG. 5 depicts a circuit block composed of cells having input and output ports to be aligned; 
     FIGS. 6 and 7 depict other examples of circuit blocks comprising of cells; 
     FIG. 8 depicts a slice tree, or hierarchy, for use in structuring an integrated circuit and 
     FIGS. 9A-9C illustrate an exemplary flow chart associated with operation of the aforementioned exemplary embodiments of the invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     In accordance with the preceding discussion, FIG. 1a depicts the electrical schematic of a multiple emitter transistor 1, and FIG. 1b depicts a cell comprises of the transistor&#39;s monolithic surface pattern. The outer rectilinear boundary of the cell is designated by numeral 10. The emitters, collector and base of the transistor comprise the ports 11 of the cell. One can understand that a plurality of such leafs can be interconnected via their ports 11 to form larger circuit components (i.e., blocks). 
     In the art of integrated circuit design, it is known to define the composition of a block of cells by one or more slices, such as the slices b and c shown in FIG. 2. More particularly a vertical slice, or &#34;VERT&#34;, is formed by concatenating a number of blocks of the same width to form a vertical column. Similarly a horizontal slice, or &#34;HORIZ&#34;, is formed by concatenating a number of blocks of the same height to form a horizontal row. 
     The cell depicted in FIG. 2, for example, can be defined by the following algorithm: 
     
         ______________________________________BLOCK a:   a := HORIZ b c;   b := VERT leafa leafb leafc;   c := VERT leafd leafe;CELLEND.______________________________________ 
    
     In the preceding algorithm, the first line defines the cell by name &#34;a&#34;. In the second line, cell &#34;a&#34; is described as a horizontal slice comprised of horizontally contiguous slices b and c, each having the same height. In the third line of the algorithm, slice &#34;b&#34; is described as a vertical slice comprised of leafa 21, leafb 22 and leafc 23, each having the same width. Finally, slice c is defined as a vertical slice comprised of vertically contiguous leafs 24 and 25, each having the same width. 
     In FIG. 2, the sum of heights of the cells comprising vertical slices b and c are equal. Since the horizontal concatenation of these two vertical slices forms a rectangular block, the resultant module can, in turn, form a cell in a larger design. It should be noted that each of the cells has a fixed size; that is, the cells are not stretchable. 
     In practice, situations often arise where two or more concatenated cells have dimensions such that their continuous combination do not form a rectangular block. In accordance with the present invention, those cases are handled by adding one or more &#34;white space&#34; cells to the concatenation so that the resultant combination is a rectangular block. An example of a simple block containing a stretchable white space 31 is shown in FIG. 3. 
     In FIG. 3 the white space 31 in cell &#34;d&#34; can be represented by the following algorithm: 
     
         ______________________________________BLOCK d:    a  VERT leaf2 b;    b  HORIZ SPACE leaf1;CELLEND.______________________________________ 
    
     Thus, the preceding algorithm stretches white space 31 to make slice b and leaf2 32 to be the same width. (The height of white space 31 is determined from the context.) 
     FIG. 4 shows a cell &#34;g&#34; containing a white space 41. In this embodiment wires 40 extend through the white space 41 to connect two ports of leafa with two ports of leafb. The following algorithm defines the cell: 
     
         ______________________________________BLOCK g:  g  VERT leafc a;  a  HORIZ leafa WIRE (C) leafb;CELLEND.______________________________________ 
    
     The operator represented by the symbol &#34;C&#34; in the preceding algorithm specifies that all of the ports of leafa 42 are connected to the ports of leafb 43 by wires 40. To provide a resultant block which has a rectangular configuration, the left side of leafa 42 is aligned with the left side of leafc 44 (since they are both the left instances of contiguous slices) and the right of leafb 43 is aligned with the right side of leafc 4 (since they are both right instances of contiguous slices). 
     FIG. 5 shows an example of a cell &#34;h&#34; with white spaces on opposite sides of the axis of a slice. The cell &#34;h&#34; in FIG. 5 can be defined by the following algorithm: 
     
         ______________________________________BLOCK h:h  VERT a b;a  HORIZ SPACE leafd (ALIGN clr il.clr) SPACE;b  HORIZ leafa leafb(il) leafc;CELLEND.______________________________________ 
    
     The name in parenthesis after the leaf name (e.g., il above) is an instance name and is provided when the instance is to be referred to later in the algorithm. The abbreviation &#34;clr&#34; is the name of a port. 
     Further according to the present invention, several fixed instances can be located between two white SPACES. Such a situation is shown in FIG. 6. The block &#34;j&#34; in FIG. 6 can be defined by the following algorithm: 
     
         ______________________________________BLOCK j: j  VERT a b; a  HORIZ SPACE leafd(ALIGN NW Il.SW) leafe SPACE; b  HORIZ leafa leafb(il) leafc;CELLEND.______________________________________ 
    
     The preceding algorithm illustrates the use of corner names NW and SW. Use of those corner names, along with SE and NE, allows alignments based upon the corners of the cells. 
     The above-described examples are cumulated in FIG. 7 to illustrate an alignment algorithm for determining the position of all instances in a block &#34;k&#34;. In accordance with the above-discussed procedures, the block &#34;k&#34; of FIG. 7 can be defined by the following algorithm: 
     
         ______________________________________BLOCK k: k VERT s1 s2 s3; s1  HORIZ SPACE c7(ALIGN NW c2.SW WIRE(C)c8(ALIGN b c6.a) SPACE; s2  HORIZ c4 WIRE(c) c5(ALIGN NW c3.SW) c6 SPACE; s3  HORIZ c1 c2 c3;CELLEND.______________________________________ 
    
     FIG. 8 shows a slice tree with cells (e.g. SPACE, WIRE, c1-c8), and with slices (HORIZ or VERT) as internal nodes s1-s3. It should be noted that the tree of FIG. 8 corresponds to the circuit layout depicted in FIG. 7. 
     As previously mentioned, the cells, or leafs, of a slice tree have fixed size except for white space cells. If any of the blocks in a HORIZ are stretchable in the x-dimension, (i.e., a white space cell or wire cell), then the HORIZ as a whole is stretchable in the x-dimension. Otherwise the width of HORIZ is simply the sum of the widths of the cells from which it is composed. Likewise, the calculation of the height of slices s1, s2 and s3 in the example above is simply the height of the fixed cells in each. The width of slice s3 is the sum of the widths of leafs c1, c2 and c3. A fixed instance is one that does not depend on alignment with another leaf. The fixed instances in the preceding example are c1, c2, c3 and c4. For all of the fixed instances of a leaf, coordinates are assigned relative to the lower left corner of the cell. 
     Instances that have explicit alignment in a block are called aligned instances. Leafs c5, c7 and c8 are aligned instances in the preceding example. Finally, an instance that does not have an alignment by itself, but depends on an instance that does, is called a dependent instance. In the example, instance c6 is a dependent instance since its location depends on the location of aligned instance c5. 
     To resolve the location of the fixed instances, a depth-first traversal of the slice tree is performed. Within a slice, the traversal goes from left to right (HORIZ), and from bottom to top (VERT). Typically, variables for defining the current x and y positions are designated, both of which are initialized to zero. Then, going from one leaf to the next of a HORIZ slice, the width of the last instance is added to the current value of x. Similarly, going from one leaf to the next leaf in a VERT slice, the current value of y is added to the height of the last instance. 
     If an instance is an aligned instance, it is necessary to find the instance to which it is aligned, and determine the position of that instance (using the method described here, and depending on whether it in turn is a fixed instance, an aligned instance, or a dependent instance). Using that position, the specified points on the two instances are aligned, which provides the position of the aligned instance in question. If an instance is a dependent instance, it is necessary to locate the instance on which it is dependent, and then to abut the dependent instance adjacent to the located instance. 
     A procedure for locating the positions the floating instances c7, c8, c6 and c5 of FIG. 7 will now be explained. Because the location of instance c7 is dependent on fixed instance c2, its position is determined by position of instance c2. Then, the left side of instance c7 is aligned with the left side of leaf c2, thereby resolving the location of instance c7. Similarly, instance c8 is aligned with instance c6, which, in turn, is dependent on the position of instance c5, which itself is aligned with instance c3 which is a fixed instance. Likewise, the position of instance c5, and the location of instance c6 can be resolved by taking the x- coordinate of c5 plus the width of c5 to determine the x- coordinate c6. Finally, leaf c6 can be used to align leaf c8 such that the b connector of leaf c8 aligns with the connector of leaf c6, thereby determining the position of instance c8. FIG. 9A represents a flow chart of an exemplary operation of embodiments as described above with respect to FIGS. 1-8. FIGS. 9B and 9C illustrate, in greater detail, those portions of the FIG. 9A flow chart which relate to resolving fixed instance locations and resolving floating instances, respectively as described above. 
     It can now be understood that the method of the present invention, by relating the spatial orientation of component cells to one another and providing expandable white cells (or wire routing cells) between adjacent but non-abutting cells, provides improved wireability, reliability, and ease of design of integrated circuits. Further, the method can improve silicon space utilization. Also, the above-described method eliminates the need to specify coordinate data or dimensions for each and every cell or space in an integrated circuit module. Thus, the method reduces design errors including inadvertent overlaps or unexpected gaps between cells in an integrated circuit. 
     Although the present invention has been described above in specific terms, the description should be regarded as illustrative rather than limitative. Thus, workers of ordinary skill in the art will appreciate that the invention may be otherwise practiced, but that such alternative modes are encompassed by the terms of the following claims and equivalents thereto.