This application claims priority to German Patent Application 10 2005 026 935.4-53 which was filed Jun. 6, 2005 and is incorporated herein by reference.
The present invention relates generally to semiconductor devices, and in a particular embodiment to a method and system for performing local geometrical operation on a hierarchical layout of a semiconductor device.
For the design of an integrated circuit or a structure in semiconductor technology (generally termed “layout”) the verification of each element within a layout against design rules is of great importance. The design rules define the conditions that are, for example, necessary for a successful manufacturing of semiconductor devices. Basic definitions of the terms used in the following description are, for example, found in U.S. Pat. No. 5,528,508, which is incorporated herein by reference.
In the layout of integrated circuits or the layout of other structures of semiconductor devices the design rule checks (DRC) or similar operations can be divided into two classes:
1. Local operations: The results can be computed by taking local interactions between shapes into account. Shapes in this context are understood to be geometric forms representing structures or a part of a structure in the layout. Shapes in particular can be geometric primitives such as boxes, wires or polygons.
A local interaction here means that the interaction is limited by the range (distance). Examples of such local operations are: Geometric operations as Boolean Operators (AND, ANDNOT, XOR), spacing checks and distance checks or the placing of elements for an Optical Proximity Correction (OPC). An example for a spacing check would be, for example, that a rule requires that the space between two metal edges is not below a certain value; otherwise a short circuit might occur.
2. Non-local Operations: The results can be computed by taking into account closed regions (also termed as groups) of interacting shapes. The determination of the area of hierarchically distributed mask polygons is an example for such a non-local operation.
Layout data for a design is commonly structured in a hierarchy of cells since such a structure in general is computationally easier to handle than a flat structure. Each cell in this context may contain shapes, i.e., geometric forms forming the structure of the actual layout, or other cells referred to as subcells or child cells. The cell containing the subcell is then also referred to as parent cell to the subcell.
One cell may occur several times in a layout, the occurrences of the cell in the layout being referred to as instances of the cell.
In a flat design rule checking tool, each subcell of a layout is replaced by a copy of the referenced cell to produce a flat layout containing only shapes, i.e., geometric forms. The resulting data structure is large and, therefore, can be handled only in a computationally expensive manner.
A hierarchical design rule checking tool on the other hand performs the design rule check directly on the hierarchical data structure of the layout. This allows a computationally efficient handling, but design rule check tools are more complicated to implement.
Hierarchical, physical verification tools of layouts (e.g., Assura by Cadence and Calibre by Mentor Graphics) differ in their computational time, the data volume for intermediate results and end results and in the representation of the results in the cell hierarchy. This influences the assessment of the results by the layout designers. The methods used for the processing of the hierarchy herein have a decisive influence on the mentioned aspects, i.e., the computation time and the data volume to be kept in storage.
An inefficient hierarchy processing may, for example, lead to longer design times for a DRC in the layout design or for simulation based OPC.
From the following references, each of which is incorporated herein by reference, it is known to use methods involving “Inverse Layout Trees” (ILT) to collect and process the hierarchical shape and cell interactions for a layout and to represent the results in a layout hierarchy:
Hedenstiema, Jeppson, “The use of inverse layout trees of hierarchial design rule checking,” 26th ACM/IEEE Design Automation Conference, 1989.
Hedenstiema, Jeppson, “The use of inverse layout trees for hierarchical design verification,” Proceedings of ICCAD-88, Santa Clara, pp. 534-537, November 1988.
Hedenstiema, Jeppson, “The Halo Algorithm—An algorithm for hierarchical design rule checking of VLSI circuits,” IEEE Transactions of Computer Aided Design of Integrated Circuits and System, Vol. 12, No. 2, February 1993.
U.S. Pat. No. 5,528,508 discloses a method that additionally uses a counter for instances for that purpose.
U.S. Pat. No. 5,559,718 describes a method in which a processing unit is coupled to a verification database. The result register has an input and an output, whereby the input of the result register is coupled to the output of a processing unit. The processing unit can override individual results.
In various aspects, the current invention is concerned with a method and a system in which layout data for local operations can be efficiently processed in a hierarchical way.
In a first embodiment, generating at least one cell pair graph is generated for cells of the layout. A partial inverse layout tree is determined from the cell pair graph. For the partial inverse layout tree, only branches of the complete inverse layout tree are considered that describe an interaction between shapes of different cells. A data set is generated from the partial inverse layout tree and the data set is saved, for example, by using the partial inverse layout tree.
Embodiments of the invention have the advantage that an inverse layout tree is generated only partially using a cell pair graph, whereas the respective complete inverse layout tree does not need to be computed at any instance in time. The cell pair graph herein is used to filter out branches of the inverse layout tree that do not contain interactions between shapes of interacting cells. By filtering out such branches, a considerable reduction in computation time can be achieved.
The cell pair graph herein encodes the interactions between different cells and their shapes in a compact, hierarchical manner. By using such a cell pair graph, thus, the interactions between shapes of different cells can be determined efficiently, reducing the computational effort to a minimum. The structure of the partial inverse layout tree results from superimposing information that is extracted from the cell pair graph and information about the relation between the cells extracted from the conventional (non inverse) layout graph.
In comparison to conventional design rule checking methods, the method according to the invention does not use explicit and complete inverse layout trees to encode shape interactions between cells, but rather extracts the information from a cell pair graph, a cell pair of two interacting cells being examined for interactions between the corresponding shapes contained in the cells on the fly when generating the partial inverse layout tree.
The shape interactions for all cell pairs that contain a particular cell referred to as base cell, are in an embodiment of the invention determined prior to the computation of the partial inverse layout tree and can then be referenced for all instances of the cell pair in the inverse layout tree. In another advantageous embodiment, only such cell pairs are considered for generating the partial inverse layout tree for which interactions of a given base shape with an intruder shape occur (if not all possible base shapes of the cell are treated in a single inverse layout tree).
The method according to the invention does not require instance counters to determine whether a component exists on a hierarchical level or not.
For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawing, in which:
FIGS. 5 to 11 are schematic drawings illustrating the steps for stepping through a partial inverse layout tree;
Within the design of a layout, the cell pair graph serves to efficiently encode and store interactions between cells of the layout. The data structure used for the cell pair graph herein is produced by determining interacting cells and storing such cells together with hierarchy information.
Within the scope of the invention, two cells forming a cell pair are considered interacting if an interaction occurs between shapes of the cells or subcells of the cells.
The first node 11 of a cell pair graph according to
A base cell is a cell containing one or more base shapes (or containing subcells that contain one or more base cells). Analogously, an intruder cell is a cell containing one or more intruding shapes (or its subcells containing one or more intruder cells). A cell in this context is “intruding” a base cell if it is interacting with the base cell, i.e., a shape of the cell interacts with a shape of the base cell.
The distinction between base cells and intruder cells is mainly a question of definition. Within the course of the process, each cell is considered and, when considered, defined as a base cell. The intruding cells for this considered base cell are then the intruder cells.
The second node 12 in
The association “references” denoting an interaction 20 (edge of the graph) points to a referenced cell pair. The arrows indicate the direction of the association. The indices refer to the multiplicity of the association, i.e., 1 cell pair references 1 . . . * instances of cell pairs. Commonly, for this purpose a UML notation is used.
The base cell of the referenced cell pair with its identifier baseCellId herein is a parent cell of the base cell of the referencing cell pair. Analogously, the intruder cell with its identifier intruderCellId is a parent cell of the intruder cell of the referencing cell pair. This is explained in detail below in connection with
Alternatively, it is also possible for the base cell (intruder cell) to be equal to the base cell (intruder cell) of the referencing cell pair.
With this structure, interactions between parent cells and child cells (i.e., cells on different hierarchy levels) as well as between sibling cells (i.e., cells on the same hierarchy level) can be described.
Within the cell pair graph, cell pairs are stored in terms of a table to facilitate the search for a particular cell pair. The table is used to identify interactions between cell pairs and their dependent cell pairs that have been computed previously and thus do not need to be computed again. In this way, redundant computations can be avoided. Furthermore, the table can be used to find all cell pairs that have a common base cell.
In FIGS. 2 to 11 the method according to the invention is explained in detail with reference to a specific example of a layout containing a number of cells.
The method for processing the example herein can be divided in two parts: generation of the cell pair graph describing the layout structure; and stepping through a partial inverse layout tree for base cells or base shapes, the partial inverse layout tree being extracted from the cell pair graph.
First, the generation of the cell pair graph is explained in the following with respect to the drawings of FIGS. 2 to 4.
The cell pair graph is generated by determining all hierarchical interactions between two cells forming a cell pair, wherein the cell pair graph is determined in a top-down approach starting with the cells on the highest hierarchy level and stepping down to the lowest hierarchy level. For the cell pair graph, when considering a cell, all interactions that are encountered for the first time (i.e., the interaction has not been encountered previously for other cells) are determined. The generation of the cell pair graph is performed for all cells of the layout in arbitrary order, in each case starting from a high level in hierarchy and stepping down to the lowest level.
The method for generating the cell pair graph can be divided in two parts which are illustrated in the flow diagrams of
In the first part (see
In the second part (see
Cell A encompasses four instances of cell B, i.e. instances B1, B2, B3, B4; cell B again encompasses two instances of cell C, i.e., instances C0 and C1. The filled black arrows (e.g., between instance B2 of cell B and the shape SA of cell A) represent an interaction between parent and child cells and their shapes across different hierarchy levels, whereas the framed white arrows represent interactions between sibling cells or sibling shapes on the same hierarchy level, the sibling cells being instances of a common parent cell and the sibling shapes being part of the same cell.
Base shapes in
The number of the instances of the cells represent their identifier. Thus, instance B0 of cell B is a base cell (because it contains a base shape) and its identifier baseCellId is 0.
The cell pair graph encodes the interactions between the cells of the hierarchical layout in an efficient and easy to interpret manner. In the left column of the cell pair graph the interacting cell pairs are listed, each interacting cell pair being represented by a bracketed term in the left column in
In the right column, the instance of the base cell of the layout interacting with the intruder cell is given. The instance of the intruder cell herein is not listed explicitly, but rather is described by a relative transformation between the base cell and the intruder cell that is stored together with the cell pair in the data set CellPair (see
If the interaction of a cell pair indirectly mediates an interaction of another cell pair, e.g., because a cell is instantiated as a subcell within a parent cell, this is indicated in the cell pair graph by a pointer between the instance of the cell and the parent cell. In the example of FIGS. 2 to 4, instance 1 of cell C interacts with cell A (see
How the cell pair graph is generated from the layout according to
In an embodiment of the invention, in addition, a data set is stored to describe the relative position of the cells with respect to each other (not shown herein).
In the exemplary layout according to
The references to a cell pair indicated by the pointers in
In a corresponding complete inverse layout tree, six branches would be necessary to encode the same amount of information, because eight instances of cell C in cell A require (see
The main advantage of using a cell pair graph lies in the fact that by using the cell pair graph the interaction between cell pairs does not have to be computed twice. Rather, the interaction for a particular cell pair is computed only once and then referenced if a second identical cell pair is encountered.
This can be illustrated by considering
Using the submethods according to
Referring now to
Next, in step 1002, those subcells, i.e., child cells, of the cell under consideration are determined whose shapes (directly or indirectly) interact with shapes of the chosen cell. Thus, with respect to
Then, in step 1003, the identified cell-subcell pair is inserted into the cell pair graph together with transformation information. Thus, the left-hand side entry (B A) of line 1 of the cell pair graph according to
Next, in step 1004, the instance identifier baseInstId of the base cell is inserted into the field CellPairInst of the corresponding entry in the cell pair graph. This creates the right-hand side entry of line 1 in the cell pair graph. The base cell here is cell B, because it carries the base shape. The instance of cell B that is relevant is instance 2 (see
Next, steps 1002 to 1004 are recursively repeated for subcells of cells that interact with the current cell. For the layout according to
In step 1005, finally, it is proceeded to the next cell of the layout. In this case, proceeding to cell B does not render new results, since cell B does not have any shapes of its own that could interact with any child cell, and cell C does not have child cells.
Referring now to
Next, in step 1011, the next pair of directly or indirectly interacting child cells of the current cell under consideration is chosen. In the case according to
In step 1012, the child cell pairs determined in step 1011 are inserted into the cell pair graph together with their transformation information. In this case, both interacting cell pairs have the same relative transformation (distance vector). The left-hand side of the cell pair graph denoting the two interacting cells and their relative transformation, thus, will get one new entry (B B) in line 3 of the cell pair graph (see
In step 1013, the instance identifier baseInstId is inserted into the corresponding line of the cell pair graph. Here, two entries are created on the right-hand side: one for instance 0 (the first instance of the first interacting cell pair B0-B1) and one for instance 2 (the first instance of the second interacting cell pair B2-B3). The instance identifier of the second cell is described indirectly by the relative transformation and is not noted in the cell pair graph according to
Next, steps 1011 to 1013 are recursively repeated for sub cell pairs of the current cell pair. This applies to the two instances of cell C (instance 0 and instance 1) interacting with the same instances of cell C from another instance of cell B. Repeating steps 1011 to 1013 for the interacting cells C renders line 4 of the cell pair graph. Two new interactions are created between instances 0 and 0 of cell C and instances 1 and 1 of cell C. Again, the second interacting instance identifier is not noted in the cell pair graph according to
Next, in step 1014, it is examined whether any more interacting child cells are present. Since in this case there are no more interacting child cells of cell A, it is proceeded with step 1010.
Proceeding with step 1010, cell B is chosen as the next cell and does not yield new interactions, since the two instances of cell C in cell B (considering cell B by itself) do not interact. Further, taking cell C does not generate new interactions either, since cell C does not have child cells (see
Next, the stepping through a partial inverse layout tree for the purpose of applying local operations to the cells of a layout, for example for design rule checking, using a cell pair graph that encodes the interaction information of all interacting cell pairs of a layout shall be explained with reference to FIGS. 5 to 11 and the flow diagrams of
In the embodiment described in the following, environments of shapes are examined with respect to their interactions with neighboring shapes. The interacting shapes generally form patterns referred to as input pattern, which occur repeatedly in a layout and consist of base shapes and intruder shapes. The computations of the corresponding output patterns herein are application specific, as well as the definition of the intruder shapes that are considered for computing a pattern.
The method according to the invention is used for applying local hierarchical operations to a layout. Such operations for example may be sizing operations or Boolean operations. Thus, accordingly the output pattern herein is defined as the pattern that results from applying a local operation to a corresponding input pattern. The output pattern thus constitutes the result of the local operation applied to an input pattern.
Within the method, interactions between different cells, which are stored in the cell pair graph, are reduced to interactions between base shapes and intruder shapes. The steps required to compute such interactions are explained below.
In principal, the steps represent a stepping through an inverse layout tree starting from the bottom, i.e., the lowest hierarchy level.
For this, only such nodes (representing instances of cells) of the (complete) inverse layout tree (describing the complete layout) are considered, which are necessary for the computation of the interactions. This means that not necessarily all instances of base cells must be considered, such as it is done conventionally.
The expressions “parent” and “child” in the following are used to describe the hierarchal relation between the cells rather than denoting a specific node of the inverse layout tree.
The subsequent steps can be performed in an application specific manner for all cells of a layout (see
For all base shapes or group of base shapes of a cell under consideration, all cell pairs are sought whose base cell equals the cell under consideration (in an advantageous embodiment, only such cell pairs are sought that contain intruder shapes interacting with the base shape or group of base shapes).
The instances of the base cells, identified by their identifiers baseInstId, of each cell pair, identified in the cell pair graph in the field CellPairInst (see
If parent instances exist that do not have an associated instance of another cell pair, the input pattern of the node under consideration is assigned to these parent instances. If the cell under consideration does not have any instances CellPairInst in the cell pair graph, the node of the virtual inverse layout tree represents a leaf of the inverse layout tree.
The cell pair instances of each parent instance branch are replaced by the cell pair instances of such cell pairs that reference the parent instance (if the parent instance does not represent a leaf of the virtual inverse layout tree).
Input patterns are generated during the stepping through the virtual inverse layout tree by adding the intruder shapes for each parent instance. Whether all intruder shapes of a pair in the input pattern of the respective node of the inverse layout tree need to be considered, is dependent on a cell pair instance referencing a (parent) cell pair or not.
With respect to the stepping through the virtual inverse layout tree starting from the bottom (i.e., depth-first) shapes that do not occur in all output patterns of the parents of a node are output in the cells corresponding to the parent instances with their respective transformations. Shapes that occur in all parent instances are (recursively) output in the common “child” instance.
When using a partial inverse layout tree, only that portion of the inverse layout tree that is currently considered must be kept in storage.
By using such method, a number of advantages arise with respect to conventional methods for design rule checking: the cell pair graph stores interactions between cells in a very compact manner compared to the forest of inverse layout trees otherwise required; the computation of interactions of repeating cell pairs and their dependent subcell pairs needs to be performed only once, thus avoiding the repeated computation of identical cell pair interactions and reducing computation time; after determining the cell pair graph the partial inverse layout trees are generated, processed and computed independent from each other. This is advantageous for example for a parallelization of the computations; results are output on the lowest hierarchical level possible, due to the use of inverse layout trees; and as a consequence of the method, the layout can be split in separate small patterns (which may also overlap), for which the results can be stored in the memory (Cache) of the computing system. The repeated computation for equal patterns, thus, can be avoided. For typical layouts, the probability for repeating patterns herein is high, because a layout conventionally is composed of small patterns arranged repeatedly throughout the layout.
In the following, the above-summarized method for stepping through a layout is explained referring to FIGS. 5 to 11 and using the cell pair graph according to
In FIGS. 5 to 11, the cell instance that is considered in each step is encircled. The arrows point from child cell instances to parent cell instances and represent branches of the partial inverse layout tree.
The root of the partial inverse layout tree is extracted from the cell pair graph. The input patterns to be considered contain the base shape of cell C and intruder shapes interacting with the base shape of cell C (see
(
(
(
(
(
(
Thus, all branches of the partial inverse layout tree are processed.
In an advantageous embodiment all computations are performed in parallel, thus saving computation time. The method described herein is particularly suitable for parallelization, since, after the cell pair graph has been determined, all computations for each base shape can be performed independently.
An input pattern is defined by a specific pattern of interacting shapes of one or several cells. Referring to
The different input patterns can be determined using the cell pairs for a given base cell. The instantiations of the base cell then are determined during the stepping through the partial inverse layout tree.
The presented embodiment of the method generates input patterns from a list of interacting shapes (representing pattern components) during the process of the method. No preprocessing step is necessary in order to determine the relevant input patterns beforehand.
The pattern components, i.e., the components the input pattern consists of, are constituted by all interacting shapes, which are computed for each interacting cell pair containing a given base cell. The pattern components are grouped according to their occurrence in the inverse layout tree. This is achieved for a cell by expanding the list of cell pair instances of the cell pair graph in a depth-first run through all branches of a partial inverse layout tree containing the parent instances of the cell and the cell pair instances. All pattern components that are applied to the same group of parent instances are then grouped together.
The method described herein can—rather than being applied to cells—also be applied to all base shapes or groups of base shapes. In an advantageous embodiment, shapes that occur in all parent instances of a cell under consideration, herein are output (recursively) in the common base cell.
The invention shall not be limited to the aforementioned exemplary embodiments. Rather, a number of variations are conceivable that use the method according to the invention although being implemented in a fundamentally different way.
Number | Date | Country | Kind |
---|---|---|---|
102005026935.4-53 | Jun 2005 | DE | national |