Product Documentation
Diva Reference
Product Version IC23.1, June 2023

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:

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

geomOr( A B )

yes

yes

geomAnd( A B )

yes

yes

geomAndNot( A B )

yes

no

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.

You must reference these labels in the label section of the geomConnect command, exactly as normal graphics labels.

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.

changeLabel

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.

joinableNet

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.

globalLabel

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.

groundNet

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

incremental

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))

can be rewritten as

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:

pin( pinLayer conLayer...)

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:     

“layer”

The pins with any purpose on the layer are associated to the derived layers

( “layer” “purpose” )

If you define a specific purpose, such as “pin” or “drawing”, the pins from only that purpose on the layer are associated to the derived layers.

Pins are taken only from the top-level of the circuit hierarchy being processed. Any pins placed in lower level cells are ignored.

soft( conLayer ... )

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.

When a layerDefs command is present in the rule deck, this command has a modified syntax. Instead of copying the inLayer to the outLayer and adding nodal information, the inLayer is directly modified with nodal information and no outLayer is produced.

Fields

outLayer

    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.

inputLayer

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.

stampLayer

The layer from which the net information is to be taken. This must be a connected layer.

floatMultiStamp

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.

error

Use this keyword to request that all error shapes be written to the marker error layer. Error shapes are as follows:

  • All input shapes overlapped by multiple stamping shapes with different net numbers. (multStamp)
  • All input shapes without any overlapping stamping shapes. (floating)
  • All stamping shapes which contribute to multiple stamping but were not selected as the majority net number. (multConnect)

mesg

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.

multStamp

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.

floating

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.

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.

limit

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
 ⠀
X