Abstract:
A method of verifying the electromigration characteristics of a circuit is characterized by the following steps, to be performed for each net or node of the circuit: gathering data on the shapes of metal which compose the net; gathering data on the capacitance of the net; gathering data on the average frequency of the net; gathering data on the voltage swing of the net; computing the absolute value of the average current needed to charge and discharge the net; computing the minimum width of metal required for the met; and graphically indicating the location of any violations on artwork for the circuit.

Description:
FIELD OF THE INVENTION 
     The present invention is generally related to the field of integrated circuits (ICs), and more particularly related to a method and apparatus for avoiding excessive electromigration in an IC device. 
     BACKGROUND OF THE INVENTION 
     The current density in an integrated circuit device becomes larger as the device becomes smaller. High current densities can cause electromigration, which in turn may result in device failure. Electromigration refers to the transport of mass in metals under the influence of current. It occurs by the transfer of momentum from electrons to positive metal ions. When a high current passes through thin metal conductors, e.g, in an IC, metal ions accumulate in some regions and voids form in other regions. The accumulation of metal ions may result in a short circuit to adjacent conductors, while the voids may result in an open circuit. 
     The electromigration resistance of some types of conductors, e.g., aluminum film conductors, may be increased by using several techniques, including alloying with copper, e.g., Al with 0.5% Cu, encapsulating the conductor in a dielectric, or incorporating oxygen during film deposition. Those and other techniques, however, are both expensive and unreliable in comparison to avoiding the source of the problem, i.e., preventing high current densities by specifying minimum conductor sizes in accordance with the expected operating conditions of the device. There are a variety of techniques in use in the electronics industry for specifying the minimum size of the conductors of an IC. However, none of the known techniques is easy to use; in fact, most require either tedious manual calculations or highly specialized software. 
     Accordingly, a primary goal of the present invention is to provide an automatic and reliable tool for verifying that a circuit layout complies with such electromigration specifications. A further goal of the present invention is to provide a tool that employs existing circuit analysis software, thus making it inexpensive and reliable. These goals are achieved by the present invention, a specific embodiment of which is described in this specification. 
     SUMMARY OF THE INVENTION 
     The present invention encompasses methods for making or designing an integrated circuit device. A first embodiment of the invention comprises the following steps: determining a capacitance of a net of a circuit; determining a frequency associated with the said net; determining a voltage swing associated with the net; computing a current on the basis of at least the said capacitance, frequency and voltage swing; computing a minimum allowable width for the net on the basis of at least the said current; and providing an indication of whether the net fails to meet the said minimum width requirement. 
     Another embodiment of the present invention further comprises the steps of determining the number of branches of the net and a static current, if any, associated with the net, and computing the said current as a function of at least the capacitance, frequency, voltage swing, number of branches and static current. 
     In another embodiment of the present invention the minimum width specification for a node of a three-layer device is determined in accordance with the following table: 
     
         ______________________________________Bidirectional Current           Unidirectional Current______________________________________w1 = (i/3.0 + 0.3) μm           w1 = (i/1.0 + 0.3) μmw2 = (i/3.0 + 0.3) μm           w2 = (i/1.0 + 0.3) μmw3 = (i/5.5 + 0.6) μm           w3 = (i/2.0 + 0.6) μm______________________________________ 
    
     where i represents the current and w1, w2 and w3 represent the minimum widths for respective metal layers of the device. 
     In still another embodiment of the present invention the minimum width is determined in accordance with the rule: 
     
         w=(i/0.75+0.4)μm, 
    
     where w is the minimum width of a layer of the device. 
     Another embodiment of the present invention further comprises the step of determining whether the current is greater than the current allowed in a single contact and, if it is, providing an indication of such. 
     Yet another embodiment of the present invention further comprises the step of graphically indicating, on artwork representing the circuit, locations at which the width of the node should be increased. 
     The present invention also encompasses methods of verifying the electromigration characteristics of a circuit. Such methods are characterized by the following steps, to be executed for each net to be examined: determining data on the shapes of metal which compose the net; determining data on the capacitance of the net; determining data on the average frequency of the net; determining data on the voltage swing of the net; computing the absolute value of the average current needed to charge and discharge the net on the basis of the capacitance, average frequency and voltage swing; computing the minimum width of metal required for the net on the basis of the said current; and, if the net is in violation of the minimum width requirement, graphically indicating the location of the net on artwork for the circuit. 
     The present invention also encompasses apparatus for verifying the electromigration characteristics of an integrated circuit. An apparatus in accordance with the invention comprises means for determining a capacitance of a net of the circuit, means for determining a frequency associated with the net, means for determining a voltage swing associated with the net, means for computing a current on the basis of at least the capacitance, frequency and voltage swing, means for computing a minimum allowable width for the net on the basis of at least the current, and means for providing an indication of whether the net fails to meet the minimum width requirement. 
     Other features and advantages of the present invention are described below in connection with the detailed description of preferred embodiments. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     FIG. 1 is a schematic diagram illustrating the distribution of the capacitance of a node. 
     FIG. 2 is an illustration of a node with one incoming and two outgoing branches. 
     FIG. 3 is a schematic diagram of an exemplary IC device. 
     FIGS. 4(a) and 4(b) illustrate how electromigration specification violations are indicated on the artwork of an IC in accordance with the present invention. 
     FIG. 5 is a flowchart of an electromigration verification program in accordance with the present invention. 
    
    
     DETAILED DESCRIPTION OF PREFERRED EMBODIMENTS 
     As discussed above, electromigration is a phenomenon related to the current density in a metallic conductor. The present inventor has devised a tool that breaks the electromigration problem into two parts: 
     1. Calculating the average current present at any node (or net) in the circuit. 
     2. Checking the metal and contact geometries to ensure each node is capable of carrying the given current (a contact is typically a plug of metal that joins separate layers). 
     The tool is invoked with the HPUX (a UNIX-like programming language) MAKE --  ELECTRO command, which uses the -F option to specify the major frequency of the circuit under consideration. (Listings, or scripts, of the MAKE --  ELECTRO program and subroutines invoked by MAKE --  ELECTRO are provided in the appendix.) It is also possible to specify the operating frequency of individual nodes. The MAKE --  ELECTRO script requires that a design rule check (DRC) and capacitance extract program be run first. The DRC and capacitance extract program of the present example is called TRANTOR, a program developed by engineers of the Hewlett-Packard Company (HP), the assignee of this application. TRANTOR is basically a program that manipulates and analyzes graphical data, therefore it may be used to analyze IC artwork data to compute the capacitance at the respective nodes of an IC. It should be noted, however, that the specific TRANTOR program is not necessary to practice the present invention. What is necessary is a program that is capable of generating capacitance data for the nodes of the device to be checked. Such programs are well known, thus it unnecessary to describe one in detail in this application. Thus, as used in this specification, the term TRANTOR refers to a generic program for extracting capacitance data for a circuit from a description of the physical layout of the circuit. 
     In the following discussion the term CMOS26 and CMOS34 refer to design rules or processes employed by HP. Briefly, CMOS26 is a high-speed, high-density CMOS process for building very large IC chips. It produces 1 μm FETs in circuits with up to three levels of aluminum interconnect. CMOS34 is a process for building poly-Si gate CMOS chips with one or two levels of aluminum metallization. 
     MAKE --  ELECTRO calculates the average current at a node, commonly referred to as the cvf current; i.e., the current is proportional to the product of capacitance, voltage and frequency, as described below. MAKE --  ELECTRO will also consider any user-specified static current. Points on the node that are farther away from the drive point (the point at which current enters the node) will have less current than points closer to the drive point. This is because the current at a point on the net is a function of the downstream capacitance, as shown in FIG. 1, which illustrates how capacitance is distributed along a conductor. The MAKE --  ELECTRO tool uses the capacitance extracted and stored in a data file by TRANTOR. Due to the limitations of known capacitance extraction programs, MAKE --  ELECTRO does not consider the incremental capacitance as a function of the distance from the drive point, but rather models the capacitance as one lumped value. In addition, it should be noted that TRANTOR does not consider the number of branches at a node. 
     FIG. 2 depicts how current might be divided at a node that branches out, creating less current density on the node than if there were only a single branch. (In the figure, current i 0  divides into currents i 1  and i 2 .) There is no information in the data generated by TRANTOR about how the capacitance is distributed throughout branches of a net. Thus, if an entire node were analyzed on the basis of the current at the drive point, the MAKE --  ELECTRO program would tend to predict the &#34;worst case&#34; average current flowing at that node. However, it should be noted that MAKE --  ELECTRO allows the user to manually specify the number of branches at each node (as described below), which mitigates the limitation of having the capacitance data computed as one lumped value. 
     The average current i at the drive point of any given node is computed by MAKE --  ELECTRO in accordance with the following equation: 
     
         i=(((bi.sub.-- mult×c×vswing×frequency)+static)/branches), 
    
     ps where vswing represents the voltage swing on the node, static represents the user-specified static current on the node and bi --  mult is 1 if the current is unidirectional and 2 if the current is bidirectional. 
     There are three ways to specify the parameters used to calculate the average current associated with a node. From least to highest precedence they are: 
     1. The expected, or default, value. 
     2. The value supplied in a schematic diagram (or a data file representative of the schematic diagram). 
     3. The value supplied in the OVERRIDE --  DEFAULTS file. 
     Consider as an example the capacitance of a single node. The default value is the amount TRANTOR provides. To add extra capacitance to the node, the property E --  cap may be placed in the schematic diagram along with the amount to be added, as shown in FIG. 3, wherein a capacitance of 4e-12 (4 picofarads) is added to the node labelled OUT. In addition, the parameter E --  stat=1e-6 indicates a static current on the node IN, E --  uni=1 indicates a unidirectional current of 1 milliamp on the node NIN, and E --  branch=4 indicates that the node OUT is to be analyzed as having four branches. Another way to modify the capacitance is to edit the OVERRIDE --  DEFAULTS file. The OVERRIDE --  DEFAULTS file is a data file that is created by the user to override the default values, e.g., the values created by the capacitance extraction program. 
     The electromigration specifications for CMOS26 at 110° C. yield the following equations for the minimum widths of metal1, metal2 and metal3, respectively, where metal1, metal2 and metal3 designate respective metal layers of a circuit (these equations are of course only examples of how one could specify minimum line widths; the specific equations appropriate in a particular instance will depend upon the design rules being employed): 
     
         ______________________________________Bidirectional Current           Unidirectional Current______________________________________w1 = (i/3.0 + 0.3) μm           w1 = (i/1.0 + 0.3) μmw2 = (i/3.0 + 0.3) μm           w2 = (i/1.0 + 0.3) μmw3 = (i/5.5 + 0.6) μm           w3 = (i/2.0 + 0.6) μm______________________________________ 
    
     The rule for both metal1 and metal2 in CMOS34 is: w=(i/0.75+0.4)μm. As mentioned above, CMOS26 and CMOS34 designate different respective manufacturing processes and sets of design rules employed by HP. Insofar as this specification is concerned, the significance of those processes is that a CMOS26 device has up to three layers of conductors and a CMOS34 device has up to two layers of conductors. 
     The layouts of each net are examined by MAKE --  ELECTRO (using TRANTOR) for locations that are less than the minimum calculated width. The metal surrounding all contacts is also checked to ensure it is sufficient to carry the expected current. 
     The MAKE --  ELECTRO tool also determines whether the current in a net is greater than that allowed to flow through a single contact of any type. If this is the case, all contacts of that type on the net are flagged, indicating that multiple contacts are necessary to carry the current. 
     All of the errors are output into a database and may be examined with a conventional graphical editor (such editors are well known). The electromigration errors are then superimposed on top of the artwork for the circuit, thereby making it easy for the design engineer to see the locations where metal must be added to comply with the minimum width specification. 
     FIG. 4(a) shows the conductors and contacts (the boxes containing the symbol &#34;X&#34;) associated with the net SIG1, which have been defined to have a capacitance of 10 pF in the OVERRIDE --  DEFAULTS file. FIG. 4(b) illustrates the resulting electromigration errors when checked at a frequency of 100 MHz. There are two types of errors shown in FIG. 4(b). The gray regions represent errors that relate to metal width, exclusive of contacts, and the crosshatched regions represent errors associated with contacts. As indicated by the fact that the contacts themselves are gray, there is more current on the net than can be carried in a single contact. 
     A log file (a file where error messages and other kinds of data are written while the program is running) created by MAKE --  ELECTRO and called &#34;electro --  $ICPROCESS/electro --  log&#34; (where &#34;$&#34; indicates a variable name) contains the following lines, which show the parameters used in checking SIG1 and the number and types of resulting errors: 
     
         ______________________________________SIG1 C=1.00078e-11 I=11.00858 w1=3.96952666666667    w2=3.9695266666667 w3=2.60156branches=1 static=0 f=100000000.0 v=5.5 BIDIRmetal1: 2metal1 contact: 3metal2 contact: 1______________________________________ 
    
     In the above listing, w1, w2 and w3 are the respective widths needed for the metal1, metal2 and metal3 specifications. Because I=11.00858 milliamps and the current is bidirectional, the limit of 3 milliamps per contact has been violated in this example and at least four contacts would be needed to carry the full current. (The limit of 3 milliamps per contact is specified in the CMOS26 design rules.) Further, the listing indicates that at two locations the width of the metal1 layer must be increased and that the maximum current specification for three metal1 contacts and one metal2 contact has been exceeded. 
     In addition, the average current may be divided by four by changing the number of branches, which in the present example would cause the cell to pass. It is important to note, however, that changing the branch value can mask errors, so the errors present with branches equal to 1 should always be considered before increasing the number of branches. 
     FIG. 5 is a flowchart of an electromigration verification algorithm in accordance with the present invention. The flowchart is described next, and after that description is a brief description of the source code in the appendix. 
     At block 10 the program determines whether any sub-block (i.e., a lower level block in a hierarchical design) exists that has not been checked. If any such sub-block exists the program branches to block 12 and checks that sub-block before checking the remaining circuit. 
     At block 14 the program determines whether the capacitance data for the circuit at hand is up-to-date. This is carried out by examining the respective date codes of the capacitance data file and the circuit model data file. 
     At block 16 the capacitance extract program is run if the capacitance data is not current. 
     At block 18 the frequency, capacitance, voltage, etc., data from the schematic or OVERRIDE --  DEFAULTS file is compiled, i.e., read into memory. 
     At block 20 the minimum widths for the respective layers of a particular node are determined and then compared to the actual respective widths as indicated by the circuit&#39;s artwork. 
     At block 22 any errors are output as shapes where metal must be added. 
     At block 24 the program determines whether all nodes have been checked and, if not, loops to block 20 to check the next node in the list. 
     At block 26 all error shapes are superimposed on the artwork so that the design engineer can easily determine where conductor widths must be increased. 
     Turning now to the source code in the appendix, the MAKE --  ELECTRO script controls processing of all user options and variables. It then invokes CBMAKE (a UNIX MAKE equivalent for hierarchical chip design) with the target electro --  $ICPROCESS/electro --  passed (see lines 216, 294 and 197 of the MAKE --  ELECTRO script). This starts a chain of dependency checking to ensure the correct actions are taken. 
     The basic CBMAKE control file is ART.CBM (the source code is in the appendix), which includes ELECTRO.CBM on line 1369. The definition of the ELECTRO --  PASSED target is on line 82 of the ELECTRO.CBM script. This definition states that once a TRANTOR.DB file (i.e., a TRANTOR data base) exists for the block being examined, it is done. The rule for a TRANTOR.DB to be valid is on line 20 of the ELECTRO.CBM script. That rule states that the target ELECTRO --  READY must be valid. Line 10 describes the ELECTRO --  READY target in the chain of dependencies. There are three dependencies for that target (which carries out block 10 of FIG. 5). First, line 11 states that all sub-blocks must have been verified, i.e., that their ELECTRO --  PASSED target is valid; any invalid sub-block will be verified starting at line 82. In addition, the capacitance extract target (CAP --  PASSED) must be up-to-date. If CAP --  PASSED is not current, it is expanded in accordance with the rules starting on line 1308 of ART.CBM. These rules are not described in detail in this specification since capacitance extraction methods are well known. The final dependency of ELECTRO --  READY is in the MIGRATE.IN file (line 12, ELECTRO.CBM), which results from the actions indicated in block 18 of FIG. 5. 
     The rules for building MIGRATE.IN start on line 30 of ELECTRO.CBM. First, the function SAME --  AS --  LAST --  FREQUENCY (defined on line 300, ART.CBM) will cause MIGRATE.IN to be rebuilt if the frequency has changed, even if the circuit itself did not change. The other dependencies for this target are the schematic properties target (SCH --  PROPS), which is checked to ensure that all user specified properties in the schematic have been compiled, an override defaults file template (called DEFAULTS in the source code) for the user, which is created, and the capacitance extract data, which is compiled into a user readable file called CAPSUM.MAX. 
     The SCH --  PROPS file is created by the rules described on line 70 of ELECTRO.CBM. The SCH --  PROPS file contains a sequence of TRANTOR commands executed in the TRANTOR script GET --  SCH --  PROPS, which lists all schematic properties and extracts those properties beginning with &#34;E --  &#34;, which by convention is the prefix for all schematic electromigration properties. The DEFAULTS file, which is a place for the user to define properties textually, is initially created by the ELECTRO --  DEFAULTS program as a template so the user will not have to memorize the proper syntax. (It should be noted that the DEFAULTS file of the source code is equivalent to the OVERRIDE --  DEFAULTS file discussed above.) 
     Once the dependencies for MIGRATE.IN are valid, the file is created. This is done via BuildElectroScript, which uses the UNIX AWK program to compile all of the data from CAPSUM.MAX, DEFAULTS and SCH --  PROPS into a sequence of commands that may be used to check the width of all nodes in the circuit. 
     At this point the ELECTRO --  READY target has been validated and the actual electromigration check begins with the actions needed to create the TRANTOR data base (TRANTOR.DB). These actions start on line 22 of ELECTRO.CBM. The control file for these actions is MIGRATE.BATCH, which is invoked on line 26. This script initializes some variables and executes the script MIGRATE.IN. 
     MIGRATE.IN contains a series of calls to the program doWidth. The loop encompassing blocks 20 through 24 of FIG. 5 is carried out by MIGRATE.IN calling doWidth for each node in the circuit, using its precomputed values. doWidth checks the geometries of the metal shapes and also outputs errors onto &#34;violation layers&#34; as needed. It is these violations that are graphically superimposed on the actual artwork to show where metal must be added because of electromigration violations. 
     The foregoing analysis is generally valid for non-power supply nodes. This is because the current flowing in a power supply line is not a function of only the capacitance on that line; it is a function of the total current consumed and discharged in the block it supplies. An extreme worst case approach is to add all the capacitances inside of the block and compute the total possible current capacity of the power supply based on the maximum frequency of the entire block. A better approach is to calculate the average power expected to be dissipated in the block under certain predefined conditions. Then the power supplies may be sized according to the electromigration specifications and the average current contributing to the iv or cv 2  f power dissipation. 
     The system described above is a specific example of one embodiment of the present invention. Many modifications of that embodiment will be within the true scope of the invention, as set forth in the claims. For example, the system described above may be modified in the following ways: 
     (1) The voltage and capacitance on a node may be computed as a function of the distance from the drive point. Unless this is done, every point on the net is checked for the width required at the drive point. 
     (2) The number of contacts may be checked in determining if there is a problem. The method described above flags all contacts on a node if the average current calculated is greater than the amount a single contact is capable of carrying. The number of contacts needed may be computed by determining from the log file the amount of current a single contact is capable of carrying and dividing the average current by that number. 
     (3) The system described could be modified to check for errors at 85° C. instead of or in addition to 110° C.