Abstract:
A method implemented on a computer system for enhancing performance of an integrated circuit design verification system, the computer system having a memory including a circuit design, the circuit design including a base layer, a first layer, a second layer, a first derived layer, and a second derived layer, the first derived layer defined in response to operation between the base layer and the first layer, the second derived layer defined in response to an operation between the second layer and the first derived layer, includes the steps of retrieving the first layer from the memory, the first layer located within the base layer, deriving a negative first derived layer in response to the first layer, the negative first derived layer being a negative domain representation of the first derived layer, and verifying the circuit design in response to the negative first derived layer.

Description:
BACKGROUND OF THE INVENTION 
     The present invention relates generally to design verification systems, and more specifically to integrated circuit (IC) mask verification systems. 
     MASK LAYER DESIGN VERIFICATION 
     The fabrication of integrated circuits (IC) is dependent upon the creation of a set of &#34;masks&#34; used during the fabrication process. Each mask in the set represents a different step in the fabrication, typically addition or deletion of material. A digitized representation of an image of a mask is commonly called a &#34;mask layer&#34; or simply a &#34;layer&#34;. Each layer is comprised of a set of geometric shapes representing the desired configuration of materials such as metal, polysilicon, or substrate in a finished IC. For example, layers can represent the deposition of metal, or the etching away of resistive material between two layers of metal so that a &#34;via&#34; is opened. 
     Commercially available software products perform tests on the layers, such as testing the veracity of a set of &#34;design rules,&#34; with operations known as &#34;design rule checks&#34; (DRCs). One or more DRCs are applied to the geometric shapes of each layer, directly by measuring the shapes and their relationships, or indirectly by creating intermediate layers (also known as &#34;derived layers&#34;). Derived layers often are more amenable to design rule checking than the original layers, and can be used in the creation of subsequent derived layers. 
     Typically, derived layers are created using &#34;scan line&#34; algorithms which are well known to one skilled in the art. Scan line algorithms are based upon using edges of geometric objects within a layer to determine where two layers overlap or how far apart the geometric objects are. Depending upon the operation, such as an AND or an OR, etc., the overlap will have different significance to the layer derived from the combination. Conventional pixel by pixel operations between layers is not typically performed because of the high pixel resolution typically used. For example, in a layer, every micron may be represented by approximately one thousand pixels, thus for every square micron in a layer, about one million operations would have to be performed. Scan line and other algorithms reduce the number of operations required. 
     The number of geometric shapes needed to represent an image of an advanced IC is in the hundreds of millions, or billions, and is climbing with advancing fabrication technology. As a result, methods are being created to reduce the amount of data processing needed for designing IC&#39;s and for performing DRC and other verification-related tasks. One such method is &#34;hierarchical analysis&#34;, in which the &#34;cells&#34; of a design are verified individually within a cell context. The full &#34;flat&#34; representation of the IC, however, is typically not checked during the design phase nor the verification phase of the IC&#39;s creation. 
     LAYER OPERATIONS 
     In the hierarchical DRC of a design, one important step is the determination and assessment of the interrelationships among cells that are referenced by at least one common ancestor. Such cells are called the &#34;progeny&#34; of that ancestor, for convenience. Part of the determination of the relationships among progeny involves dealing with the overlap and abutment of shapes in the progeny. When progeny overlap or abut (or are even &#34;too close&#34;) then the shapes in them may overlap (or abut or be too close) and the effects of this relationship must be evaluated with respect to the design rules being tested. A base layer (substrate) is, by definition, &#34;everywhere&#34; on the chip. It is the base material upon which all other materials are deposited in the fabrication of an IC, thus the base layer exists in overlapping or abutting progeny by definition. 
     &#34;Layer operations&#34; on original layers are well-understood by those involved in IC verification using scan line and other processing methods. It is also well-known and understood that certain operations involving the base layer result in highly complex layer representations because the base layer is &#34;everywhere.&#34; For example, when the computer derives a &#34;derived layer&#34; according to the rule &#34;baseLayer AND NOT someLayer&#34;, the result is a large polygon with &#34;holes&#34; in all locations occupied by someLayer. If someLayer is complex, the derived layer typically is even more complex. Deriving other layers from previously derived, complex layers typically results in even more complexity. This increase in complexity impacts the user by increasing the amount of computer processing time required for design verification. 
     Two exemplary classes of operations involved in the design-rule verification of IC mask sets are a logical &#34;AND NOT&#34; operation and a logical exclusive OR (&#34;XOR&#34;) operation. These operations have the effect of &#34;subtracting&#34; one set of shapes from another set of shapes. For example: layer 3=layer 1 AND NOT layer 2 results in layer 3 being equal to layer 1 with openings where layer 2 is present. 
     ILLUSTRATION 
     FIGS. 1A-E illustrate sample mask layers that are used for production of a MOS transistor. FIG. 1A illustrates a base layer 10 of a substrate 20 that is of interest in a circuit. FIG. 1B illustrates a mask layer 40 that is used to define where a gate oxide 50 is to be defined. FIG. 1C illustrates a mask layer 70 that is used to define where self-aligning source and drain regions 80 are to be located. FIG. 1D illustrates a mask layer 100 that is used to define contact points 110 to the MOS transistor. FIG. 1E illustrates a mask layer 130 that is used to define contacts 140 for the MOS transistor. In the figures, the shaded regions represent the existence of material whereas the un-shaded regions represent the absence of material. In FIGS. 1B and 1E, base layer 10 is shown in dotted lines for comparison purposes. 
     FIG. 2 illustrates a result of a typical AND NOT logical operation between mask layers. FIG. 2 includes a derived mask layer 160 including an opening 170. As can be easily seen, derived mask layer 160 is derived from the logical AND NOT operation of base layer 10 and gate oxide 50 of mask layer 40. 
     FIG. 3 illustrates a result of a typical OR logical operation between mask layers. FIG. 3 includes a derived mask layer 190 including opening 200. As can be easily seen, derived mask layer 190 is derived from the logical OR operation between derived mask layer 160 and mask layer 100. In this example, opening 200 represents the metal connect for the gate of the MOS transistor. 
     What is needed are methods and apparatus which reduce computer processing time for design verification of IC designs. 
     SUMMARY OF THE INVENTION 
     The present invention provides methods and apparatus for enhancing performance of design verification systems. 
     According to a preferred embodiment of the present invention a method implemented on a computer system for enhancing performance of an integrated circuit design verification system includes the steps of retrieving a first layer from a memory, the first layer located within a base layer, and deriving a negative derived layer in response to the first layer, the negative derived layer being an inverse representation of a derived layer. The method also includes the step of verifying the circuit design in response to the negative derived layer. 
     According to another embodiment of the present invention a computer system is configured to enhance performance of an integrated circuit design verification system, the computer system includes a memory including a circuit design, the circuit design including a base layer, a first mask layer, a second mask layer, a first derived layer, and a second derived layer, the first derived layer defined in response to an operation between the base layer and the first mask layer and the second derived layer defined in response to an operation between the second mask layer and the first derived layer, and a retriever for retrieving the first layer from the memory, the first layer located within the base layer. The computer system also includes a deriver for deriving a negative first derived layer in response to the first layer, the negative first derived layer being an inverse of the first derived layer, and a verifier for verifying the circuit design in response to the negative first derived layer. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     In order to more fully understand the present invention, reference is made to the accompanying drawings. Understanding that these drawings are not to be considered limitations in the scope of the invention, the presently preferred embodiments and the presently understood best mode of the invention are described with additional detail through use of the accompanying drawings in which: 
     FIGS. 1A-E illustrate sample mask layers that are used for production of a MOS transistor; 
     FIG. 2 illustrates a result of a typical AND NOT logical operation between mask layers; 
     FIG. 3 illustrates a result of a typical OR logical operation between mask layers; 
     FIG. 4 is a block diagram of a system according to a preferred embodiment of the present invention; 
     FIG. 5 illustrates a flow diagram of the preferred embodiment of the present invention; 
     FIG. 6 illustrates an example of the method disclosed in FIG. 5; 
     FIGS. 7a-c illustrate the concept of complexity as applied to a mask layer algorithm based upon trapezoidal shapes; and 
     FIG. 8 illustrates a further example of the present invention. 
    
    
     DETAILED DESCRIPTION 
     System Configuration 
     FIG. 4 is a block diagram of a system 220 according to a preferred embodiment of the present invention. System 220 includes, preferably, a display monitor 230, a computer 240, a keyboard 250, a mouse 260, and a modem 270. Computer 240 includes familiar computer components such as a processor 280, memory storage devices such as a random access memory (RAM) 290 and a disk drive 300, and a system bus 310, interconnecting the above components. Mouse 260 is but one example of a graphical input device; a trackball is another example. Modem 270 is but one example of a device enabling system 220 to be coupled to a network; a network interface card is another example. RAM 290 and disk drive 300 are examples of computer-readable memory (tangible media) for storage of the herein described computer code and computer programs; other types of computer-readable media include floppy disks, removable hard disks, optical storage media such as CD-ROMS and bar codes, and semiconductor memories such as flash memory and read-only-memories (ROMs). 
     In a preferred embodiment, system 220 includes an UltraSparc computer running the Solaris operating system from Sun Microsystems of Sunnyvale, Calif. and Vampire software from Cadence Design Systems, Inc. 
     FIG. 4 is representative of but one type of system for embodying the present invention. It will be readily apparent to one of ordinary skill in the art that many system types and hardware and software configurations including more or fewer components are suitable for use in conjunction with the present invention, such as an HP-755/125 computer from Hewlett-Packard Corporation. 
     Description of the Preferred Embodiment 
     In the preferred embodiment of the present invention a physical lay-out of a circuit design is initially resident in a memory storage device in a computer system. A typical circuit design includes layers or images of masks that are used for production purposes within a particular region in a substrate. The particular region may or may not span an entire substrate, thus preferably the term &#34;base layer&#34; will be used herein. For example, a base layer may span an entire semiconductor substrate region of a circuit design, the base layer may span only a portion of the semiconductor substrate region where a particular circuit &#34;cell&#34; of interest is being verified, or the base layer may span portions of the semiconductor substrate region where particular circuit &#34;cells&#34; of interest are being verified, etc. 
     In the present example, a circuit design including a base layer, a first layer, and a second layer is provided. Based upon these layers, a design verification system determines that a first derived layer should be formed by the combination of the base layer and a first layer, and a second derived layer should be formed by a combination of the first derived layer and a second layer. Exemplary combinations of the base layer and the first layer are AND NOT and XOR. 
     FIG. 5 illustrates a flow diagram of the preferred embodiment of the present invention. In the preferred embodiment, a circuit design includes a base layer and a first layer. 
     Initially the first layer having geometric shapes resident within the base layer are retrieved from memory, step 340. Next, the computer derives a negative domain representation of a derived layer, step 350. In the preferred embodiment of the present invention, the negative domain representation, a negative derived layer, is set equal to the first layer when a logical ANDNOT or XOR operation is required between the base layer and a first layer. 
     The negative derived layer is a &#34;negative domain&#34; representation of a derived layer. For example, where the derived layer exists, the negative derived layer does not exist, and vice versa. In the preferred embodiment of the present invention, the derived layer is said to reside in the &#34;positive&#34; domain, the negative derived layer resides in the &#34;negative&#34; domain. 
     Next, given that a negative derived layer was calculated, instead of conventionally only the derived layer, the computer verifies the circuit design in response to the negative derived layer, step 360. In other words, the circuit design is verified using the layer derived in the &#34;negative&#34; domain. Because certain layers in the negative domain are lower in complexity than layers in the positive domain, calculations based upon layers in the negative domain are faster than calculations based upon the layers in the positive domain. Verification of the circuit design is thus enhanced. 
     FIG. 6 illustrates an example of the method disclosed in FIG. 5. FIG. 6 includes a first layer 370 including portion 380, similar to FIG. 1B, and a negative derived layer 390 including portion 400. According to the method in FIG. 5, when the logical combination of a base layer (not shown) ANDNOT first layer 370 is required to form a derived layer, the negative derived layer 390 is formed instead. Here, negative derived layer 390 is equal to first layer 370. In FIG. 5, the outline of the portion of interest is shown for convenience. 
     As was illustrated in FIG. 2, derived layer 160 was derived from the logical combination of base layer 10 in FIG. 1A AND NOT layer 40 in FIG. 1B. Comparing negative derived layer 390 in FIG. 6 to derived layer 160 in FIG. 2, it can be readily seen that negative derived layer 390 is less &#34;complex&#34; (as will be defined) than derived layer 160. Because there is less complexity, negative derived layer 390 may be used to verify the circuit design more efficiently than derived layer 160. 
     Complexity can be defined in terms of the number of &#34;edges&#34; present in each layer in light of the fact that edges are used for scan line algorithms, as previously mentioned. For example, negative derived layer 390 has 4 edges (the perimeter of portion 400), and derived layer 160 has 10 edges (the perimeter and opening 170). Another calculation of complexity may be the length of edges in the derived layers. For example negative derived layer 390 would have a length equal to the perimeter of portion 400 whereas derived layer 160 would have a length equal to the perimeter of derived layer 160 plus the perimeter of opening 170. 
     Other measures of complexity are easily foreseeable based upon the different algorithms used. For example, one alternative to operating upon edges (using scan-line algorithms), is operating upon trapezoidal shapes and dividing layers up into trapezoidal shapes. Using this alternative, complexity is measured in terms of the number of trapezoids in a layer, as illustrated below. 
     FIGS. 7A-C illustrate the concept of complexity as applied to a mask layer algorithm based upon trapezoidal shapes. FIG. 7a illustrates trapezoids representing layer base layer 10 in FIG. 1A. FIG. 7a includes two trapezoids 420 and 430. FIG. 7b illustrates trapezoids representing derived layer 160 in FIG. 2. FIG. 7b includes five trapezoids 440, 450, 460, 470, and 480. FIG. 7c illustrates trapezoids representing negative derived layer 390 in FIG. 6. FIG. 7c includes one trapezoid 490. Comparing FIGS. 7b and 7c it can be seen that calculations based in the negative domain have approximately a five-fold decrease in complexity as compared to the positive domain. 
     In practice, there has been significant improvement in the speed of design verification. It is believed that the preferred embodiment of the present invention, described herein, is attributable to the decrease in the complexity of the mask layers used for design rule checking. 
     FIG. 8 illustrates a further example of the present invention. FIG. 8 illustrates a negative derived layer 510, a negative layer 520, and a negative derived layer 530. 
     In the present example, negative derived layer 530 is the negative domain representation of derived layer 190. As was illustrated in FIG. 3, derived layer 190 was derived from the logical combination of derived layer 160 OR layer 100 in FIG. 1D. Comparing negative derived layer 530 in FIG. 8 to derived layer 190 in FIG. 3, it can be readily seen that negative derived layer 530 is also less &#34;complex&#34; than derived layer 190 (as defined above). Because there is less complexity, negative second derived layer 530 may also be used to verify the circuit design more efficiently than derived layer 190. 
     In FIG. 8, negative derived layer 530 is formed by performing calculations within the negative domain. Negative derived layer 510, for example is formed from the logical combination of base layer 10 AND NOT 40 as was illustrated in FIG. 6, and negative layer 520 is the negative domain representation of layer 100 in FIG. 1D. The logical combination of derived layer 160 OR layer 100 is a positive domain representation, and the logical combination of negative derived layer 510 AND negative layer 520 is a negative domain representation. 
     Thus, FIG. 8 illustrates that performing design rule checking within &#34;the negative domain&#34; is advantageous often when the complexity of the negative domain representation is less than the complexity of the corresponding &#34;normal&#34; or &#34;positive&#34; layer or derived layer. In the preferred embodiment, the user does not calculate both a positive domain representation and a negative domain representation for each operation, instead the domain is determined preferably according to which domain the operands happen to be calculated in. 
     Conventional DRC operations are typically performed in the positive domain and typically avoid the negative domain. Because users do not typically think in the negative domain, the conversion from positive to negative domain using the described methods, is performed transparently to the user. Examples of this are described below: 
     In the following examples, A, B, and C are mask layers: 
     If the DRC requires C=B ANDNOT A, and B has only been calculated in the negative domain (B*), using known logical manipulation, C* (C in the negative domain)=B* OR A. Similarly if A has only been calculated in the negative domain (A*), using known logical manipulation, C (C in the positive domain)=B AND A*. Further if A and B are only calculated in the negative domain (A* and B*), using known logical manipulation, C=A* ANDNOT B*. In the first case only C* is calculated, as a result, subsequent layers derived from C are transparently manipulated to be derived from C*; in the last two cases C is calculated so that subsequent layers derived from C are unaffected. 
     If the DRC requires C=B OR A, and B has only been calculated in the negative domain (B*), using known logical manipulation, C* (C in the negative domain)=B* ANDNOT A. Similarly if A has only been calculated in the negative domain (A*), using known logical manipulation, C* (C in the negative domain)=A* ANDNOT B. Further if A and B are only calculated in the negative domain (A* and B*), using known logical manipulation, C*=A* AND B*. In all three cases only C* is calculated, as a result, layers derived from C are transparently manipulated to be derived from C*. 
     If the DRC requires C=B AND A, and B has only been calculated in the negative domain (B*), using known logical manipulation, C (C in the positive domain)=A ANDNOT B*. Similarly if A has only been calculated in the negative domain (A*), using known logical manipulation, C (C in the positive domain)=B ANDNOT A*. Further if A and B are only calculated in the negative domain (A* and B*), using known logical manipulation, C*=A* OR B*. In the first two cases C is calculated so that subsequent layers derived from C are unaffected; in the last case only C* is calculated, as a result, subsequent layers derived from C are transparently manipulated to be derived from C*. 
     If the DRC requires C=B XOR A, and B has only been calculated in the negative domain (B*), using known logical manipulation, C* (C in the negative domain)=(A ANDNOT B*) OR (B* ANDNOT A). Similarly if A has only been calculated in the negative domain (A*), using known logical manipulation, C* (C in the negative domain)=(A* ANDNOT B) OR (B ANDNOT A*). Further if A and B are only calculated in the negative domain (A* and B*), using known logical manipulation, C*=(A* ANDNOT B*) OR (B* ANDNOT A*). In the first two cases C* is calculated, as a result, subsequent layers derived from C are transparently manipulated to be derived from C* in the last case C is calculated so that the subsequent layers derived from C are unaffected. 
     Conclusion 
     In the foregoing specification, the invention has been described with reference to specific exemplary embodiments thereof. Many changes or modifications are readily envisioned. For example, not only boolean (logical) operations lend themselves to this technique. Other operations such as a first layers &#34;insideness&#34; with respect to a second layer can be performed in the negative domain by testing the &#34;outsideness&#34; of the first layer with respect to the &#34;negative&#34; of the second layer; as well as testing for abutment. 
     The specification and drawings are, accordingly, to be regarded in an illustrative rather than in a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.