6
Connectivity Extraction Concepts
In the Diva verification system, you must establish the connectivity of the circuit for connectivity-related rules in DRC and for device, parameter, and parasitic extraction. You can establish connectivity with the geomConnect command, which is described in the command reference part of this chapter. If you use the geomConnect command, you can specify how the different layers in the circuit are to be labeled and connected.
How Connections Are Formed
A connection is formed when a single shape on a via layer overlaps shapes on at least two interconnect layers. The connection is based on the via layer. If there is no via for a connection, Diva does not recognize a connection. However, if there is a via, but the connection is badly formed because there is no interconnect layer, Diva recognizes this and flags the error on the marker layer in the layout.
External butting between a shape on one layer with a shape on another layer is not considered overlap. There must be a common overlap area between the via and all the interconnect shapes before a connection is formed. It is not sufficient for each of the interconnect shapes to overlap the via, but in different areas.
If a via overlaps multiple interconnect layers, Diva connects all of them and they become the same electrical net. To connect a single via with only two layers, regardless of how many overlap it, you must split the via layer using the appropriate layer derivation commands. You can then define multiple via clauses with the geomConnect command. An alternative is to use a svia.
An svia forms a connection when a single shape on a svia layer overlaps a shape on the first interconnect layer and a shape on one or more of the remaining interconnect layers. The shape on the first interconnect layer is is connected to the shape on the first of the remaining interconnect layers. The shapes on later interconnect layers are not connected.
If a single via or svia forms more than one connection because of multiple overlapping interconnect layers, each set forms an independent connection. Diva allocates the via or svia itself to only one of the resulting nets.
Methodology
Diva verification processes all connections on interconnect layers and groups all of the interconnect shapes into nets. Each net is a unique electrical entity. Each shape is marked with the number of the net to which it belongs. DRC uses these numbers for the sameNet and diffNet options.
You extract connectivity during both DRC and Extraction. You can use connectivity in DRC independent of other extraction processing. You also extract connectivity during Extract. When you run Extract, the program creates an extracted cellview that contains the connectivity and device information.
Limitations
Some of the limitations for extracting connectivity are as follows:
- In DRC, connectivity information not entirely correct unless you run in full flat mode. The connectivity is always meaningful in an extraction run.
- The via must be on a different layer from the interconnect. For each via layer, you can specify multiple via clauses. All via clauses with the same via layer will be combined by the compiler into a single via clause for processing. After combining via clauses, there may be no more than 15 interconnect layers per via layer.
- If a via does not connect to two layers, Diva flags the error on the marker layer (marker error). The via forming the bad connection is allocated a dummy net number of zero and is therefore not connected to any real net in the circuit. When the vias from badly formed contacts are used in commands requiring nodal information like the sameNet and diffNet options of DRC Parasitic Measurement, they can create false errors or hide actual errors.
- The via and interconnect layers must be derived layers.
- Any globalLabel, changeLabel, joinableNet and groundNet commands must precede the first geomConnect command in the rule deck. Only one geomConnect command can follow a measureResistance command. No geomConnect command can follow the saveInterconnect, extractDevice (and its variants), measureFringe, complexParasitic, measureParasitic and multiLevelParasitic commands.
- Layers assigned connectivity by a geomConnect or geomStamp command, or derived from a connected layer by a command that propagates connectivity, will become unconnected following a later geomConnect command in the rule deck.
- The geomConnect command uses shape serial numbers to keep track of which shapes are in each net. For this reason, serial numbers must be unique among the connected layers. The rule compiler willdetect this happening and cause geomConnect to use temporary serial numbers for the analysis. This will increase runtime due to the extra processing required. It is recommended that rule writers make every effort to avoid having layers with common serial numbers in their geomConnect commands.
Labeling
Diva verification assigns arbitrary net numbers to each electrical net it generates. To label the nets, you can use one or more of these options.
Pins are taken from the layers used by the geomConnect statement. Since the input to geomConnect must be derived layers, Diva determines which original layers these derived layers are based on and extracts the pins from those original layers wherever possible.
metal = geomAndNot( "aluminum" "logo_metal" )
geomConnect( via( cut metal poly ) )
In this example, the program automatically uses the pins from aluminum in order to label the metal during connectivity analysis.
For associating the original layer pins to derived layers, these rules apply for logical commands.
| Pins from Layer A | Pins from Layer B | |
|---|---|---|
The association is also made through any command that selects polygons without modifying them (for example, geomOverlap).
The automatic association of original layer pins to derived layers is disabled if the pin clause in geomConnect is used.
Graphics Text String Labels
You can name a net with a text string from the graphics database. If you place the origin of a text string over an interconnect shape in the layout, you can use the label clause of the geomConnect command to apply that label during connectivity processing.
You can apply one label name any number of times to a single net. If a single net has two or more different names, Diva selects the first one it encounters, and the others are flagged with warning messages. If two or more nets have the same name, Diva labels only one with that name and generates a warning message.
If two or more shapes lie under the same label origin, the label is applied to the shape of the first layer you define in the label clause of the geomConnect command. A warning message is generated for the additional layers.
Labels are only collected from the top level of the circuit hierarchy. This avoids the problem of multiple placements of cells causing duplicate label names.
Supplemental Text Labels
The layerText command lets you temporarily add text labels to the graphics database on a run time basis. You can add these labels at the beginning of the run. During the run, they behave exactly as normal graphics labels. The system deletes them from the database at the end of the run.
Pin Names
Pins define connections external to a circuit or cell, and must have a name. Diva automatically gives a net the name of any pin (terminal) on it. During extraction, Diva copies pins, along with their names, to the extracted version, so the pin name is used for both the pin and the net.
Modifying Labels
There are four commands you can use to modify and manipulate labels. You can use them in the Run Specific File (RSF) or in the DRC or Extraction rules files. When used, these command must appear before the first geomConnect command in the rule deck. Below is a summary of their functions. See Chapter 4, “Writing Diva Verification Rules” for more details about these commands.
Use the changeLabel command or property during run time to change the name of a net without changing the text that defines that name. You can use this command to force names into a particular convention, such as VDD to vdd!, or to force different nets to have the same name, so you can use the joinableNet command.
Use the joinableNet command during run time to direct Diva to extract disjoint nets having the same names as a single net.
Some cells can have multiple power or ground nets that are connected together at some higher level in the circuit hierarchy. When verifying at the cell level, you must use the joinableNet command to tell the program that the disjoint pieces of these global nets should be the same net.
To join multiple nets that have different names, use the changeLabel command to make all the names the same before using the joinableNet command.
Use the globalLabel command to treat labels as if they were from the top level cells even though they actually come from lower-level cells. The globalLabel command must precede the command that uses the labels.
Use the groundNet command to provide a meaningful net name to be used by commands that generate connections to ground.
If the specified net name does not need to exist in the circuit. Diva creates the net name in the extracted view.
Connectivity Commands
The following sections discuss the connectivity commands.
geomConnect
geomConnect( [ incremental ] [ via( viaLayer conLayer1 conlayer2 ... ) ... ] [ svia( sviaLayer conLayer1 conlayer2 ... ) ... ] [ overlap( conLayer1 conLayer2 ) ... ] [ buttOrOver( conLayer1 conLayer2) ... ] [ label( labelLayer conLayer ... ) ... ] [ soft( conLayer ... ) ... ] [ pin( pinLayer conLayer ... ) ... ] )
Description
The geomConnect command defines circuit connectivity by specifying how the various layers interact. All shapes on conducting layers, plus vias, are assigned to electrical nets for use by subsequent Diva verification programs.
This command preserves serial numbers. All connectivity defined previous to the current geomConnect is removed.
Prerequisites
All the via and interconnect layers you use with this command must have been derived through some previous command. If you want to use graphic layers as input, they must be processed through the geomCat or geomOr commands. Only the label and pin layers are entered as original graphics layers.
The geomConnect command may appear multiple time in the rule deck, subject to the Limitations discussed in the connectivity overview earlier in this chapter.
Fields
An optional keyword which causes the via, label, pin and soft clauses of the previous geomConnect command to be copied into the current geomConnect command. The keyword is ignored if there is no previous geomConnect command.
via( viaLayer conLayer1 conLayer2 ... )
A clause introduced by the via keyword defining the via layer (viaLayer) and at least two conducting layers that it interconnects (conLayer1 conlayer2 ...). Shapes on the viaLayer are checked against shapes on the conducting layers to determine if they form electrical connections.
To be connected, two or more conLayers must have an area in common with the viaLayer. External butting of conLayers does not form a connection. If a shape on the viaLayer has more than one disjoint set of common areas with conducting layers, each area forms an independent connection. The viaLayer itself is assigned to only one of the resulting electrical nets.
At most, 15 layers can be connected with a single viaLayer. All layers sharing a common area with a via are interconnected. An overlap of a viaLayer with less than two conducting layers results in a warning message in the system log and a copy of the via placed in the layout on the marker error layer.
Any number of via clauses can be used. If multiple via clauses use the same viaLayer, they are merged and processed as a single via clause.
The viaLayer cannot be the same as one of the conducting layers. The viaLayer cannot be a sviaLayer.
Some rule decks artificially divide layers, such as diffusion, into multiple layers for analysis. These layers are then used in a via statement to extract the connectivity information required by subsequent rules. If rule decks make too many artificial divisions, however, the layers per via limit can be exceeded. A better solution is to divide the layer after the geomConnect command. The rules normally used to divide layers are geomAnd and geomAndNot. For these rules, the output layer will contain nodal information from the first input layer.
ndiff = geomAnd(diff well)
pdiff = geomAndNot(diff well)
geomConnect(via(cont metal poly ndiff pdiff))
geomConnect(via(cont metal poly diff))
ndiff = geomAnd(diff well)
pdiff = geomAndNot(diff well)
This arrangement produces the same connectivity in both cases, unless a diff geometry is not entirely inside or outside a well geometry. This one exception is normally a DRC error and should not be of concern.
An added benefit is that the geomConnect rule runs faster because it is processing fewer layers in the vialayer. The geomAnd and geomAndNot rules run in the same amount of time when propagating nodal information after geomConnect as they would when used before geomConnect.
svia( sviaLayer conLayer1 conLayer2 ... )
A clause introduced by the svia keyword defining the sequenced via layer (sviaLayer) and at least two conducting layers that it interconnects (conLayer1 conlayer2 ...). Shapes on the sviaLayer are checked against shapes on the conducting layers to determine if they form electrical connections. The conLayers must be in manufacturing order with upper layers before lower layers.
To be connected, two or more conLayers must have an area in common with the viaLayer. One of the conLayers must be conLayer1. External butting of conLayers does not form a connection. If a shape on the sviaLayer has more than one disjoint set of common areas with conducting layers, each area forms an independent connection. The sviaLayer itself is assigned to only one of the resulting electrical nets.
At most, 15 layers can be connected with a single sviaLayer. Only the first layer sharing a common area with a svia and a conLayer1 shape are interconnected. An overlap of a sviaLayer with less than two conducting layers results in a warning message in the system log and a copy of the svia placed in the layout on the marker error layer.
Any number of svia clauses can be used, but an sviaLayer may not be used in more than one svia clause.
The sviaLayer cannot be the same as one of the conducting layers. The sviaLayer cannot be a viaLayer.
overlap( conLayer1 conLayer2 )
A clause introduced by the overlap keyword defining two conducting layers that interconnect. Shapes on conLayer1 are checked for overlap with shapes on conLayer2 to determine if they form electrical connections.
buttOrOver( conLayer1 conLayer2 )
A clause introduced by the buttOrOver keyword defining two conducting layers that interconnect. Shapes on conLayer1 are checked for abutment or overlap with shapes on conLayer2 to determine if they form electrical connections.
label( labelLayer conLayer... )
A clause introduced by the keyword label defines a labelLayer, and the conducting layers to which the label applies (conLayer ...). All text labels on the label layer are checked against shapes on the conducting layers. If the origin of a label is inside a shape, it names the electrical net of which that shape is a part. Any electrical net not named through a label is given a default name. Default net names are a number without alphabetic prefix or suffix.
The following rules apply to labels:
-
The label layer must be an original graphics layer. It can take one of two forms:
- A label positioned over multiple conducting layers applies to the first layer in the label list and a warning is issued. Layers are selected by their precedence in the label list, where the first layer takes highest precedence and the last layer takes lowest precedence.
- Labels are taken only from the top-level of the circuit hierarchy being processed. Any labels you place in lower level cells are ignored by the program.
- Duplicate labels can be placed on a single electrical net.
- If multiple labels with different names are associated with the same electrical net, that net is given the name of the first label found by Diva, and a warning message is generated for the other labels.
- If multiple electrical nets are associated with labels of the same name, the first net found is given that name, and a warning message is generated unless the joinNet option is specified at run time.
A clause introduced by the keyword pin, defines an original graphics layer and the derived layers to which the pins on the original graphic layer are to be applied.
The use of this clause disables the automatic associations described in the Labeling section of this chapter
The pinLayer must be an original graphics layer. It can take two forms:
Pins are taken only from the top-level of the circuit hierarchy being processed. Any pins placed in lower level cells are ignored.
A clause introduced by the keyword soft, identifies one or more layers as forming “soft” connections.
A soft layer is electrically connected, but should not be used to provide connections between shapes. An example being the substrate or well layers. These layers must be connected to a power supply but they are too resistive to be used to carry power to other shapes.
When a soft layer shape is found to be connected to more than one shape, which would not be connected if the soft layer were not present, the soft layer shape is considered to be in error and a marker is produced for the soft layer shape and each via shape which is not in the net selected for the soft shape. The net selected will be the one with the largest number of via connections to the soft shape.
Soft layers must be interconnect layers mentioned in a via statement. Soft layers may not be the via layers themselves. There must be at least one non-soft layer in the via, svia, overlap and buttOrOver clauses.
Use of the soft clause should be used in place of geomStamp for making connections to soft shapes and detecting multiple connections. By using soft in the geomConnect rule, macro cell pins on the soft layer can be connected. This is not possible when using geomStamp.
Example
The following example illustrates the geomConnect command and the preprocessing of original graphics layers to generate derived layers. In this example, the name via is used as a keyword, an original layer, and a derived layer.
well = geomOr( "well" ) diff = geomOr( "diffusion" ) poly = geomOr( "poly" ) ties = geomAvoiding( diff poly ) diff = geomAvoiding( diff poly unselected ) cont = geomOr( "cont" ) met1 = geomOr( "met1" ) via = geomOr( "via" ) meta = geomAnd( "met2" "analog" ) metd = geomAndNot( "met2" "analog" ) geomConnect( buttOrOver( meta metd ) via( via meta metd met1 ) svia( cont met1 poly diff ties) overlap( ties well ) label( "m1text" met1 ) soft( well ) )
geomStamp
outLayer = geomStamp( inLayer stampLayer [floatMultiStamp] [error [mesg]] [multStamp [layer]] [floating [layer]] [multConnect [layer]] [limit])
Description
The geomStamp command lets you transfer electrical connectivity information (net number) from a previously connected layer to a copy of another layer.
Each shape on the inLayer is copied to the outLayer with the net number of the shape on the stampLayer it overlaps. If an inLayer shape is not overlapped by any stampLayer shapes, the output shape is given a new, unique net number.
For shapes that are overlapped by multiple stamping shapes having different net numbers, the number of stamping shapes is counted for each different net and the input shape is given the net number having the most stamping shapes. The other stamping shapes are ignored.
For the unstamped and multiply stamped shapes, the output layer shape and the ignored stamping shapes can optionally be echoed on the marker error layer. When error shapes are generated, an optional message prefix can be specified.
It is not possible to connect macro cell pins on the inLayer using geomStamp since all macro cell connectivity is determined by the geomConnect command. Use the soft clause of the geomConnect rule instead of geomStamp.
This command preserves serial numbers when copying shapes from inLayer to outLayer.
Fields
The optional name for the merged polygon output. This layer is a copy of inputLayer with connectivity information added. If you specify the same name for the outLayer and inputLayer, the outLayer replaces the InputLayer.
If you do not specify outLayer, no connectivity information is added. If you do not specify outLayer and do not use the error option, the rules compiler does not use this command.
The input layer name. The name can be either a derived layer name or a graphics layer name enclosed in quotes. Diva copies shapes from the input layer to the output layer. The input layer may not be an edge layer.
The layer from which the net information is to be taken. This must be a connected layer.
Optional keyword that causes all input shapes that are overlapped by multiple stamping shapes with different net numbers to be assigned a new, unique, net number. This results in the shape being floating instead of connected to the majority net as described above.
Use this keyword to request that all error shapes be written to the marker error layer. Error shapes are as follows:
Provide this optional text string to control the error messages attached to the error shapes. The resulting error messages are:
mesg: No stamped Connections.
mesg: Causes Multiple Stamped Connections.
mesg: Has Multiple Stamped Connections.
Optional keyword that causes all input shapes that are overlapped by multiple stamping shapes with different net numbers to be output as error markers. If followed by a derived layer name in quotes, the shapes will be written to that layer instead of as error markers. The derived layer name may not be the same as used with floating or multConnect.
Optional keyword that causes all input shapes that are not overlapped by any stamping shapes to be output as error markers. If followed by a derived layer name in quotes, the shapes will be written to that layer instead of as error markers. The derived layer name may not be the same as used with multStamp or multConnect.
Optional keyword that causes all stamping shapes which contribute to multiple stamping, but were not selected as the majority net number, to be output as error markers. If followed by a derived layer name in quotes, the shapes will be written to that layer instead of as error markers. The derived layer name may not be the same as used with multStamp or floating.
The optional modifer errorLimit allows the specification of a limit to the number of error markers which the command will produce. The keyword abort can be used to cause early termination of the entire run if the limit is reached. See errorLimit in the drc command for details.
Example
The following example illustrates the geomStamp command. The tubtie is used in a geomConnect statement without connecting it to the tub. This command not only gives the tub the appropriate net numbers, but also flags all tubs that are not connected or that have multiple connections.
geomConnect( via ( cut tubtie diff ) )
tubnet = geomStamp( tub tubtie error "tub/tubtie" )
If the floating shapes are not to be errors:
tubnet = geomStamp( tub tubtie multStamp multConnect )
Return to top