View Library Table of Contents Previous Next Open PDF to print book Email Comments Help Using Documentation Shut Down Cadence Documentation Server


Virtuoso® UltraSim Simulator User Guide
Product Version 18.1 January 2019


4 

Post-Layout Simulation Options

This chapter describes the Virtuoso® UltraSim simulator post-layout simulation options.

Parasitic effects (for example, wire delays and coupling) are becoming increasingly important factors in integrated circuit design. The Virtuoso UltraSim post-layout simulator considers these effects, modeling parasitic resistors and capacitors extracted from the layout environment.

The Virtuoso UltraSim simulator is designed to handle the demands of most of the post-layout simulation flows (refer to Figure 4-1 for more information) and supports the backannotation of parasitic resistors and capacitors (RCs) from a detailed standard parasitic format (DSPF) file, a standard parasitic exchange format (SPEF) file, parasitic capacitance from a node capacitance file, and extracted device layout parameters from a DPF file.

The most important challenges for post-layout simulation is processing large numbers of parasitic elements and supporting a variety of layout parasitic extraction flows. The Virtuoso UltraSim simulator uses advanced RC reduction techniques to handle large numbers of parasitic elements while preserving circuit timing domain behavior. There are three general post-layout simulation methodologies:

1.
Flat RC netlist file is a simple approach, allowing you to use a large number of elements and devices in the netlist, but it tends to be more memory and time consuming. An example of a flat RC netlist is a flat DSPF file.
2.
Hierarchical RC netlist file is an approach in which the Virtuoso UltraSim simulator preserves the hierarchical structure of the netlist file to reduce run time and memory requirements. This simulation method is generally faster than the flat RC netlist file approach. The main drawback is that the parasitic information is embedded inside the netlist file, making it more difficult to extract the information.
3.
Backannotation and stitching of parasitic files is an approach that has the simulator preserve the design hierarchy to reduce run time and memory requirements, and accepts mixed post-layout netlist file formats to support simulation of circuit designs. For example, designs in which some blocks have successfully passed layout versus schematic (LVS) verification and have post-layout netlist files, whereas other blocks remain at an early stage of development and only have estimated capacitive loading. See Figure 4-2 to view this full-chip simulation flow example graphically.

Figure 4-1  Post-Layout Simulation Flow


You can use the Virtuoso UltraSim simulator backannotation flow to start full chip simulation early in the design cycle, and to gradually replace pre-layout views with post-layout netlist files, as design blocks pass layout and extraction verification. "What if" analyses can also be performed by overwriting the extracted capacitance on critical nets. The backannotation method preserves schematic device and net names to facilitate cross probing and circuit debugging. The simulator post-layout flows can be integrated into top-down or bottom-up design flows in which extractions are performed at various levels of hierarchy, following a graybox methodology.

Figure 4-2  Full-Chip Simulation Flow


The Virtuoso UltraSim simulator also provides a set of options which allow selective parasitic backannotation based on different values, such as RC elements, hierarchy level, and net names.

This chapter describes in detail the Virtuoso UltraSim simulator RC reduction method that allows you to significantly reduce the number of parasitic elements while maintaining simulation accuracy. The stitching of parasitic resistor (R) and capacitor (C) elements, and the backannotation of layout device parameters from parasitic files into hierarchical schematic or netlist files, is also described.

RC Reduction Options

The Virtuoso UltraSim simulator post-layout simulation options allow you to short small resistors, ground small coupling capacitors, and perform RC reduction in order to speed up simulation, while preserving the time domain behavior of the circuits. All the RC reduction related options can be applied globally and locally.

The simulator also provides the high-level postl option which you can use to control the trade-off between simulation accuracy and performance. Cadence recommends that you read more about "postl" before starting a post-layout simulation.

The Virtuoso UltraSim simulator supports the following RC reduction options:

ParagraphBullet
ccut
ParagraphBullet
cgnd
ParagraphBullet
cgndr
ParagraphBullet
rcr_fmax
ParagraphBullet
rcut
ParagraphBullet
rshort
ParagraphBullet
rvshort
ParagraphBullet
postl

ccut

Spectre Syntax

usim_opt ccut=value

SPICE Syntax

.usim_opt ccut=value

Note: A period (.) is required when using SPICE language syntax (for example, .usim_opt ccut).

Description

This option allows you to cut capacitors, depending on the value of the capacitors. Capacitors less than ccut are cut (that is, open circuited) during parsing. The ccut option is helpful with large post-layout netlist files containing small capacitors. To reduce memory consumption, ccut needs to be defined at the beginning of the netlist file, so cutting is performed during parsing. The default is 0.

Example

Spectre Syntax:

usim_opt ccut=0.1ff

SPICE Syntax:

.usim_opt ccut=0.1ff

tells the Virtuoso Ultrasim simulator to cut all capacitors with a value < 0.1 ff during parsing.

cgnd

Spectre Syntax

usim_opt cgnd=value

SPICE Syntax

.usim_opt cgnd=value

Description

This cgnd option defines the absolute threshold value for grounding coupling capacitors. A capacitor is considered a coupling capacitor if neither of its terminals are connected to a ground voltage source. A ground voltage source is one that has a path to ground directly or through other voltage sources. Coupling capacitors can lead to significantly longer run times and may not contribute appreciably to simulation accuracy. A coupling capacitor can be split into two grounded capacitors with the same capacitance value: One at each terminal of the original capacitor.

With this option, a coupling capacitor is grounded if its value is less than cgnd. The grounding of coupling capacitors is automatically enabled by setting the high-level post-layout control parameter postl. The default value depends on the setting for postl. See Table 4-1 for more details.

Example

Spectre Syntax:

usim_opt cgnd=1pf

SPICE Syntax:

.usim_opt cgnd=1pf

tells the Virtuoso UltraSim simulator to ground all coupling capacitors with a value < 1 pf.

cgndr

Spectre Syntax

usim_opt cgndr=value

SPICE Syntax

.usim_opt cgndr=value

Description

The cgndr option defines the relative threshold value for grounding coupling capacitors. A coupling capacitor is grounded if the ratio of its value to the total node capacitance on both sides is less than cgndr. The range of cgndr is between 0 and 1. The default value depends on the setting for postl. See Table 4-1 for more details.

Example

Spectre Syntax:

usim_opt cgndr=0.01

SPICE Syntax:

.usim_opt cgndr=0.01

tells the Virtuoso UltraSim simulator to ground any coupling capacitor if the ratio of its value to the total node capacitance on both sides of the capacitor is < 0.01.

rcr_fmax

Spectre Syntax

usim_opt rcr_fmax=value

SPICE Syntax

.usim_opt rcr_fmax=value

Description

The rcr_fmax option defines the maximum frequency of interest for RC reduction (default is 1.0 GHz.). If the chosen value for rcr_fmax is less than the maximum operating frequency of interest, you may experience accuracy loss for frequencies higher than the specified rcr_fmax value.

Example

Spectre Syntax:

usim_opt rcr_fmax=10G

SPICE Syntax:

.usim_opt rcr_fmax=10G

tells the Virtuoso UltraSim simulator to adjust the RCR reduction accordingly (suitable for designs up to 10 GHz for the frequency of interest).

rcut

Spectre Syntax

usim_opt rcut=value

SPICE Syntax

.usim_opt rcut=value

Description

This option can be used to cut resistors with values larger than the specified rcut value (that is, open-circuit resistors). The default is 1e12 ohm.

Example

Spectre Syntax:

usim_opt rcut=1e14

SPICE Syntax:

.usim_opt rcut=1e14

tells the Virtuoso UltraSim simulator to cut all resistors with a value > 1e14 ohm.

rshort

Spectre Syntax

usim_opt rshort=value

SPICE Syntax

.usim_opt rshort=value

Description

Signal net resistors with an absolute value less than rshort are short-circuited. The default value depends on the setting for postl. See Table 4-1 for more details.

Example

Spectre Syntax:

usim_opt rshort=1 subckt=AMP

SPICE Syntax:

.usim_opt rshort=1 subckt=AMP

tells the Virtuoso Ultrasim simulator to short-circuit all signal net resistors < 1 ohm in all instances of subcircuit AMP.

rvshort

Spectre Syntax

usim_opt rvshort=value

SPICE Syntax

.usim_opt rvshort=value

Description

For any resistor connected to an independent voltage source, if its absolute value is less than rvshort, the resistor is short-circuited. The default value depends on the setting for postl. See Table 4-1 for more details.

Example

Spectre Syntax:

usim_opt rvshort=1 subckt=SUPPLY

SPICE Syntax:

.usim_opt rvshort=1 subckt=SUPPLY

tells the Virtuoso UltraSim simulator to short-circuit all rail resistors with a value less than 1 ohm in all instances of subcircuit SUPPLY.

postl

Spectre Syntax

usim_opt postl=0|1|2|3|4

SPICE Syntax

.usim_opt postl=0|1|2|3|4

Description

This is a high-level simulator option that allows you to control the trade-off between simulation accuracy and performance.

postl=0 is designated for simulation of a pre-layout netlist file containing a few resistors and capacitors. The Virtuoso UltraSim simulator does not perform RC filtering or reduction, except shorting extremely small resistors, and grounding extremely small capacitors to allow stable simulation.

postl=1, postl=2, and postl=3 are intended for post-layout simulation. As the postl level is raised, the Virtuoso UltraSim simulator applies more aggressive RC reduction. As a result, run time and memory usage are reduced at the cost of slightly degraded simulation accuracy.

For postl=4, most of the resistors in signal nets are eliminated and most coupling capacitors are grounded. This produces a post-layout simulation where only grounded parasitic capacitance is taken into account.

 

Table 4-1  Virtuoso UltraSim Post-Layout Options 

 

Pre-Layout

Post-Layout

Post-Layout

Post-Layout

Post-Layout

postl

0 (default)

1

2

3

4

RC reduction

no

yes

yes

yes

no

rcr_fmax (GHz)

1.0

1.0

1.0

1.0

1.0

rshort (W)

1.1e-3

1.1e-3

0.01

0.1

100

rvshort (W)

1.1e-3

1.1e-3

0.01

0.1

100

cgnd (F)

1e-18

1e-16

1e-16

1e-15

1e-14

cgndr

0

0.01

0.1

0.1

0.3

Note: For EMIR analysis, when postl is set to 0, the default value for rshort and rvshort is 1e-6.

Example

Spectre Syntax:

usim_opt postl=1 rshort=1 subckt=VCO

SPICE Syntax:

.usim_opt postl=1 rshort=1 subckt=VCO

The Virtuoso UltraSim simulator applies postl=1 to all instances of subcircuit VCO. Any resistors connected to signal nets in all instances, if the values of the resistors are less than 1 ohm, are short-circuited. Default values are used for all other options associated with postl, such as rcr_fmax, rvshort, cgnd, and cgndr.

Excluding Resistors and Capacitors from RC Reduction

preserve

Spectre Syntax

usim_opt preserve=1 inst=[res1 res2 cap1 cap2] model=[model1 model2..] preserve_file=["filename1" "filename2"...]

SPICE Syntax

.usim_opt preserve=1 inst=[res1 res2 cap1 cap2] model=[model1 model2..] preserve_file=["filename1" "filename2"...]

Description

The preserve=1 command is used to exclude resistors and capacitors from RC reduction.

Note: The default value of the preserve option is 0.

 

Table 4-2  preserve=1 Options 

Option

Description

res1, res2

Specifies the resistors to be excluded from RC reduction (must use full hierarchical name).

cap1, cap2

Specifies the capacitors to be excluded from RC reduction (must use full hierarchical name).

filename1, filename2...

The name of the files which contain the resistors and capacitors to be excluded (full hierarchical name for resistors and capacitors needs to be included in files).

model1, model2

Specifies the model names. The model names need to use the resistor or capacitor model names (all instances of the model specified are excluded from RC reduction).

If all of the options are used in the statement, the Virtuoso UltraSim simulator only uses the resistors and capacitors shared between the specified options (that is, RC reduction options, such as postl, rshort, and rvshort are applied only to the resistors and capacitors not specified in this option).

Example

Spectre Syntax:

usim_opt preserve=1 inst=x1.x3.r1 preserve_file=["inst.txt"]

SPICE Syntax:

.usim_opt preserve=1 inst=x1.x3.r1 preserve_file=["inst.txt"]

The inst.txt file contains the following resistors:

X3.x2.res1

X2.res3

R1

tells the Virtuoso UltraSim simulator to exclude the x1.x3.r1, X3.x2.res1, X2.res3, and R1 resistors from RC reduction.

Stitching Files

capfile

Spectre Syntax

usim_opt capfile="<instance|subckt> file"

SPICE Syntax

.usim_opt capfile="<instance|subckt> file"

Description

The capfile option specifies how to load a cap file into the Virtuoso UltraSim simulator.

Arguments

 

path

The full hierarchical path of the instance for which the cap file is prepared. Wildcards are supported (for more information about wildcards, see "Wildcard Rules" ).

You can also specify the subcircuit name as the path. All instances of the specified subcircuit are stitched. If the path is not specified, and the cap file contains a .subckt statement, all instances with the same subcircuit name are stitched (or the simulator assumes that the cap file is prepared for the entire design, and the quotation marks can be omitted).

file

The name of the parasitic file. The Virtuoso UltraSim simulator can read compressed parasitic files in gz format (files need to have the .gz extension).

For more information about parsing options for cap files, refer to "Parsing Options for Parasitic Files".

Example

For the design shown in Figure 4-2 , the parasitic files need to be specified as follows (Spectre syntax example):

usim_opt spef="a a.spef" spf="Top.spf.gz" capfile="b b.cap"

Note: You need to make sure the parasitic elements specified in the parasitic files do not overlap and that Top.spf is extracted until the level for the a and b instances is reached (that is, the file contains all elements inside top, excluding the elements in a and b).

dpf

Spectre Syntax

usim_opt dpf="<instance|subckt> file"

SPICE Syntax

.usim_opt dpf="<instance|subckt> file"

Description

The dpf option specifies how a parasitic DPF file is loaded into the Virtuoso UltraSim simulator. You can also use dpf to stitch the instance section of a DSPF file, causing the parasitic resistors and capacitors to be ignored. The simulator supports backannotation of DPF files. Figure 4-3 shows the process of DPF file stitching using the simulator.

Figure 4-3  Stitching a DPF Parasitic File


The Virtuoso UltraSim simulator preserves the hierarchy of the pre-layout netlist file when stitching DPF files (same as SPF/DSPF files).

Arguments

 

path

The full hierarchical path of the instance for which the parasitic file is prepared. Wildcards are supported (for more information about wildcards, see "Wildcard Rules" ).

You can also specify the subcircuit name as the path. All instances of the specified subcircuit are stitched. If the path is not specified, and the parasitic file contains a .subckt statement, all instances with the same subcircuit name are stitched (or the simulator assumes that the parasitic file is prepared for the entire design, and the quotation marks can be omitted).

file

The name of the parasitic file. The Virtuoso UltraSim simulator can read compressed parasitic files in gz format (files need to have the .gz extension).

For more information about parsing options for DPF files, refer to "Parsing Options for Parasitic Files".

Example

Spectre Syntax:

usim_opt dpf="top.spf"

SPICE Syntax:

.usim_opt dpf="top.spf"

or

Spectre Syntax:

usim_opt dpf="top.spf.gz"

SPICE Syntax:

.usim_opt dpf="top.spf.gz"

tells the Virtuoso UItraSim simulator to only stitch the instance section of the parasitic file top.spf.

spf

Spectre Syntax

usim_opt spf="<instance|subckt> file"

SPICE Syntax

.usim_opt spf="<instance|subckt> file"

Description

This option is used to specify how a parasitic DSPF file is loaded into the Virtuoso UltraSim simulator.

Arguments

 

path

The full hierarchical path of the instance for which the parasitic file is prepared. Wildcards are supported (for more information about wildcards, see "Wildcard Rules" ).

You can also specify the subcircuit name as the path. All instances of the specified subcircuit are stitched. If the path is not specified, and the parasitic file contains a .subckt statement, all instances with the same subcircuit name are stitched (or the simulator assumes that the parasitic file is prepared for the entire design, and the quotation marks can be omitted).

file_name

The name of the parasitic file. The Virtuoso UltraSim simulator can read compressed parasitic files in gz format (files need to have the .gz extension).

Example

Spectre Syntax:

usim_opt spf=a.dspf

SPICE Syntax:

.usim_opt spf=a.dspf

 

Consider another example:

.subckt sub1 n1 n2
...
.ends sub1
.subckt sub2 m1 m2
...
.ends sub1

X1 node1 node2 sub1
X2 node3 node4 sub2
X3 node5 node6 sub2

If .usim_opt spf="X2 parasitic.dspf" is used, the stitching is limited to instance X2. If .usim_opt spf="sub2 parasitic.dspf" is used, the simulator applies the stitching to all sub2 instances, which include X2 and X3.

spef

Spectre Syntax

usim_opt spef="<instance|subckt> file"

SPICE Syntax

.usim_opt spef="<instance|subckt> file"

Description

This option is used to specify how a parasitic SPEF is loaded into the Virtuoso UltraSim simulator.

Example

Spectre Syntax:

usim_opt spef=top.spef

SPICE Syntax:

.usim_opt spef=top.spef

For more information about parsing options for DSPF and SPEF files, refer to "Parsing Options for Parasitic Files".

Hierarchical SPEF

Description

The Virtuoso UltraSim simulator also supports stitching of hierarchical SPEF files produced by the Cadence Assura physical verification tool. If you specify the SPEF file that corresponds to the highest level of hierarchy of interest, the corresponding SPEF file for the sub-levels is automatically loaded into the simulator via the *define statement (per the convention adopted by Virtuoso UltraSim and Assura in which the first string of the *define statement indicates the instance name of the sub-block and the second string indicates the name of the SPEF file for the instance).

In general, the Assura RCX tool names the SPEF file and corresponding DPF file as follows: blockname.spef and blockname.dpf (for example, vco.spef and vco.dpf). By default, the Virtuoso UltraSim simulator automatically stitches the corresponding DPF file for each stitched SPEF file, provided the DPF files exists in the path. The usim_opt spfinstancesection=off option can be used to turn off stitching of the DPF file, useful when you do not want to stitch the corresponding DPF file.

Example

The top level of the SPEF file is named top.spef and contains

*define X1 INV

*define X2 INV.spef

To invoke stitching, use the following statement (Spectre syntax example):

usim_opt spef=top.spef

The simulator searches for a file named INV.spef for the X1 and X2 instances. If INV.spef is not found, the simulator issues a warning.

Note: You can specify the path in the *define statement and the .spef suffix can be omitted.

Parsing Options for Parasitic Files

The Virtuoso UltraSim simulator provides you with the options needed to parse parasitic files. Unless stated otherwise, parsing options are global and are only applicable to parasitic files during stitching (not applicable to pre-layout netlist files).

The simulator supports the following parsing options:

ParagraphBullet
cmin
ParagraphBullet
cmingnd
ParagraphBullet
cmingndratio
ParagraphBullet
dpfautoscale
ParagraphBullet
dpfscale
ParagraphBullet
dpfskipinst
ParagraphBullet
dpfskipinstfile
ParagraphBullet
dpfskipsubckt
ParagraphBullet
dpfskipsubcktfile
ParagraphBullet
rmax
ParagraphBullet
rmaxlayer
ParagraphBullet
rmin
ParagraphBullet
rminlayer
ParagraphBullet
rvmin
ParagraphBullet
speftriplet
ParagraphBullet
spfaliasterm
ParagraphBullet
spfbusdelim
ParagraphBullet
spfcaponly
ParagraphBullet
spfccreport
ParagraphBullet
spfcrossccap
ParagraphBullet
spfdeletepin
ParagraphBullet
spffingerdelim
ParagraphBullet
spfhierdelim
ParagraphBullet
spfinstancesection
ParagraphBullet
spfipin
ParagraphBullet
spfkeepcoupling
ParagraphBullet
spfkeepbackslash
ParagraphBullet
spfnegvalue
ParagraphBullet
spfnetpin
ParagraphBullet
spfparadiodes
ParagraphBullet
spfrcreduction
ParagraphBullet
spfrecover
ParagraphBullet
spfscalec
ParagraphBullet
spfscaler
ParagraphBullet
spfserres
ParagraphBullet
spfserresmod
ParagraphBullet
spfskipncap
ParagraphBullet
spfsplitfinger
ParagraphBullet
spfswapterm
ParagraphBullet
spfxtorintop
ParagraphBullet
spfxtorprefix

cmin

Spectre Syntax

usim_opt cmin=value

SPICE Syntax

.usim_opt cmin=value

Description

A parasitic capacitor less than cmin is discarded (open circuited) during RC stitching. The default is 0.

Note: Capacitors in the pre-layout are not affected because they are not stitched.

Example

Spectre Syntax:

usim_opt cmin=1ff

SPICE Syntax:

.usim_opt cmin=1ff

tells the Virtuoso UltraSim simulator to discard any parasitic capacitors < 1 ff during stitching.

cmingnd

Spectre Syntax

usim_opt cmingnd=value

SPICE Syntax

.usim_opt cmingnd=value

Description

A parasitic coupling capacitor less than cmingnd is grounded during RC stitching (default is 0).

Example

Spectre Syntax:

usim_opt cmingnd=1ff

SPICE Syntax:

.usim_opt cmingnd=1ff

tells the Virtuoso UltraSim simulator to ground a parasitic coupling capacitor during stitching if the capacitor is < 1 ff.

cmingndratio

Spectre Syntax

usim_opt cmingndratio=value

SPICE Syntax

.usim_opt cmingndratio=value

Description

A parasitic coupling capacitor is grounded during RC stitching if the ratio of its value to the total node capacitance on both sides is less than cmingndratio (default is 0).

Note: The pre-layout capacitors are not affected.

Example

Spectre Syntax:

usim_opt cmingndratio=0.1

SPICE Syntax:

.usim_opt cmingndratio=0.1

tells the Virtuoso UltraSim simulator to ground a parasitic coupling capacitor during stitching if the capacitor has a ratio < 0.1, when compared to the total node capacitance on both sides of the capacitor.

dpfautoscale

Spectre Syntax

usim_opt dpfautoscale=on|off

SPICE Syntax

.usim_opt dpfautoscale=on|off

Description

This option controls the behavior of the dpfscale option. When dpfautoscale is set to on, dpfscale is set to the same value as the parameter scale. When dpfautoscale is set to off, dpfscale is independent of the parameter scale. The dpfautoscale option is on by default.

Note: When the model libraries contain options, such as scale, scalefactor, or geoshrink, it is recommended that you use the dpfautoscale=on setting instead of dpfscale.

Example

Spectre Syntax:

usim_opt dpfautoscale=on

SPICE Syntax:

.usim_opt dpfautoscale=on

tells the Virtuoso UltraSim simulator to use the value of the parameter scale for dpfscale.

dpfscale

Spectre Syntax

usim_opt dpfscale=value

SPICE Syntax

.usim_opt dpfscale=value

Description

This option specifies the scale factor for device geometry parameters (default is 1.0).

Note: The pre-layout device parameters are not affected by dpfscale.

Example

Spectre Syntax:

usim_opt dpfscale=2

SPICE Syntax:

.usim_opt dpfscale=2

tells the Virtuoso UltraSim simulator to scale all the device geometry parameters by a multiple of two during stitching.

dpfskipinst

Spectre Syntax

usim_opt dpfskipinst=[instname1 instname2]

SPICE Syntax

.usim_opt dpfskipinst=[instname1 instname2]

Description

This option skips the stitching of device parameters of the specified instances in the DPF file or in the instance section of a DSPF file. All parasitic RCs connected to the skipped instances are stitched. Complete hierarchical names for instances are required. Wildcards are supported. For more information on wildcards, see Wildcard Rules.

When you use this option, the following message, which shows the number of skipped instances, is printed in the log file:

Messages statistics

=====================

Skipped instances by dpfskipinst 8

Note: dpfskipinstfile, dpfskipsubckt and dpfskipsubcktfile are other related options that allow you to enable or disable device parameter stitching for specified instances or subcircuits.

Example

Spectre Syntax:

usim_opt dpfskipinst=[x1.x2]

SPICE Syntax:

.usim_opt dpfskipinst=[x1.x2]

tells the Virtuoso UltraSim simulator to skip the stitching of device parameters for the instance x1.x2.

dpfskipinstfile

Spectre Syntax

usim_opt dpfskipinstfile="file_name"

SPICE Syntax

.usim_opt dpfskipinstfile="file_name"

Description

This option skips the stitching of device parameters of instances that are listed in the specified file_name.

Note: dpfskipinst, dpfskipsubckt and dpfskipsubcktfile are other related options that allow you to enable or disable device parameter stitching for specified instances or subcircuits.

Example

Spectre Syntax:

usim_opt dpfskipinstfile="file1"

SPICE Syntax:

.usim_opt dpfskipinstfile="file1"

And, the content of file1 is as follows:

x1.xr2

x1.x4.xd5

tells the Virtuoso UltraSim simulator to skip the stitching of the device parameters of instances x1.xr2 and x1.xr.xd5 that are listed in file file1.

dpfskipsubckt

Spectre Syntax

usim_opt dpfskipsubckt=[subckt1 subckt2]

SPICE Syntax

.usim_opt dpfskipsubckt=[subckt1 subckt2]

Description

This option skips stitching the device parameters of all instances of specified subcircuits. All parasitic RCs connected to the skipped instances are stitched. Wildcards are supported (for more information about wildcards, see Wildcard Rules ).

When this option is used, the following message, which shows the number of skipped subcircuits, is printed in the log file.

Messages statistics

=====================

Skipped subckts by dpfskipsubckt 80

Example

Spectre Syntax:

usim_opt dpfskipsubckt=[or2]

SPICE Syntax:

.usim_opt dpfskipinst=[or2]

tells the Virtuoso UltraSim simulator to skip the stitching of device parameters of all instances of subckt or2.

dpfskipsubcktfile

Spectre Syntax

usim_opt dpfskipsubcktfile="file_name"

SPICE Syntax

.usim_opt dpfskipsubcktfile="file_name"

Description

This option skips stitching the device parameters of all instances of the subcircuits, which are listed in a text file file_name.

Example

Spectre Syntax:

usim_opt dpfskipsubcktfile="file1"

SPICE Syntax:

.usim_opt dpfskipsubcktfile="file1"

And, file1 contains the following information:

mux4

nand2

tells the Virtuoso UltraSim simulator to skip stitching of the device parameters of all instances of subcircuits mux4 and nand2.

rmax

Spectre Syntax

usim_opt rmax=value

SPICE Syntax

.usim_opt rmax=value

Description

All parasitic resistors with resistances larger than the value specified by this option are treated as open-circuited during stitching. This is useful to cut parasitic resistors that are unreasonably large. This does not affect any resistors in pre-layout netlist. The default value of the option is infinity.

This option is usually used when the resistance values appear suspicious, that is, non-physical. In general, this indicates that the extraction is questionable. Large resistors, such as 1.0e+9, may cause simulation problems. The option rmax helps bypass any extraction problem and continue with simulation.

Example

Spectre Syntax:

usim_opt rmax=1.0e+9

SPICE Syntax:

.usim_opt rmax=1.0e+9

tells the Virtuoso UltraSim simulator to treat all resistors with resistances greater than 1.0e+9 as open-circuited and cut such resistors.

rmaxlayer

Spectre Syntax

usim_opt rmaxlayer=value&layername

SPICE Syntax

.usim_opt rmaxlayer=value&layername

Description

This option applies the rmax value on the parasitic resistors of the specified layer. Multiple statements can be specified. The option is used when the extracted resistance values are unreasonably large on certain layers.

Examples

Spectre Syntax

usim_opt rmaxlayer=1000000&ptab

usim_opt rmaxlayer=1000000&ptab0

usim_opt rmaxlayer=1000000&ntap

SPICE Syntax

.usim_opt rmaxlayer=1000000&ptab

.usim_opt rmaxlayer=1000000&ptab0

.usim_opt rmaxlayer=1000000&ntap

tells the Virtuoso UltraSim simulator to treat any parasitic resistors on layers ptab, ptab0, and ntap with value greater than 1000000 Ohm as open circuit for layers.

rmin

Spectre Syntax

usim_opt rmin=value

SPICE Syntax

.usim_opt rmin=value

Description

If rmin is specified, a parasitic resistor less than rmin is shorted during RC stitching (default is 0).

Note: The pre-layout resistors are not affected by rmin.

Example

Spectre Syntax:

usim_opt rmin=1

SPICE Syntax:

.usim_opt rmin=1

tells the Virtuoso UltraSim simulator to short circuit parasitic resistors with a value < 1 ohm during RC stitching.

rminlayer

Spectre Syntax

usim_opt rminlayer=value&layername

SPICE syntax

.usim_opt rminlayer=value&layername

Description

This option applies the rmin value on parasitic resistors of the specified layer. Multiple statements can be specified. The option is used when the extracted resistance values are unreasonably small on certain layers.

Examples

Spectre syntax:

usim_opt rminlayer=0.1001&nwell

usim_opt rminlayer=0.1001&dnwell

usim_opt rminlayer=0.1001&sub

SPICE syntax

.usim_opt rminlayer=0.1001&nwell

.usim_opt rminlayer=0.1001&dnwell

.usim_opt rminlayer=0.1001&sub

tells the Virtuoso UltraSim simulator to short any parasitic resistors on layers nwell, dnwell and sub with value less than 0.1001 Ohm.

rvmin

Spectre Syntax

usim_opt rvmin=value

SPICE Syntax

.usim_opt rvmin=value

Description

If rvmin is specified, a power net parasitic resistor less than rvmin is short circuited during RC stitching (default is 0).

Note: The pre-layout rail resistors are not affected by rvmin.

Example

Spectre Syntax:

usim_opt rvmin=1

SPICE Syntax:

.usim_opt rvmin=1

tells the Virtuoso UltraSim simulator to short circuit the parasitic rail resistors with a value < 1 ohm during RC stitching.

speftriplet

Spectre Syntax

usim_opt speftriplet=1|2|3

SPICE Syntax

.usim_opt speftriplet=1|2|3

Description

This option specifies which value should be used for stitching in the SPEF file. This is effective only when the values in the SPEF file are represented by triplets (for instance, 0.325:0.41:0.495). The default is 2.

Example

Spectre Syntax:

usim_opt speftriplet=1

SPICE Syntax:

.usim_opt speftriplet=1

tells the Virtuoso UltraSim simulator to choose the first of the triplet values in the SPEF file for stitching.

spfaliasterm

Spectre Syntax

usim_opt spfaliasterm="<model|subckt> <prelayout_term1>=<spf_alias1> <prelayout_term2>=<spf_alias2> … <prelayout_termN>=<spf_aliasN>"

SPICE Syntax

.usim_opt spfaliasterm="<model|subckt> <prelayout_term1>=<spf_alias1> <prelayout_term2>=<spf_alias2> … <prelayout_termN>=<spf_aliasN>"

Description

This option allows you to specify an alias for terminal names of a device or instance during stitching. In some cases, the terminal names used in the pre-layout netlist are not consistent with the terminal names in the DSPF/SPEF file, which causes mismatches during stitching. The spfaliasterm option helps resolve this inconsistency.

Example

Spectre Syntax:

usim_opt spfaliasterm="dgnfet 1=D 2=G 3=S 4=B"

SPICE Syntax

.usim_opt spfaliasterm="dgnfet 1=D 2=G 3=S 4=B"

Consider that in the pre-layout netlist, an inline subckt is used to model a MOSFET device as follows:

inline subckt dgnfet (1 2 3 4 )

//parameter setting

….

dgnfet (1 2 3 4) dgnfet l=l w=w …

….

ends dgnfet

However, on the extraction side, the inline subckt is treated as a regular MOSFET, and the terminal names in DSPE/SPEF file are (D G S B). By default, UltraSim cannot find the terminal name (D G S B) in the pre-layout netlist. As a result, you might see warning messages as below in the spfrpt file:

WARNING(:478) : Instance I1.m0 has no terminal named "B". Element ignored

WARNING(:493) : Instance I2.m2 has no terminal named "B". Element ignored

After the spfaliasterm option is used as specified in the example, the inconsistency is corrected, and the WARNING message is not displayed.

spfbusdelim

Spectre Syntax

usim_opt spfbusdelim=[]

SPICE Syntax

.usim_opt spfbusdelim=[]

Description

This option specifies the bus delimiter in parasitic files, and is applicable to SPEF, DSPF, and cap files. It also affiliates bus delimiter matching between the pre-layout netlist and the SPEF/DSPF files, and is used when the bus delimiter in the pre-layout netlist file is different from what is specified in the parasitic file.

The Virtuoso UltraSim simulator replaces the bus delimiter in the parasitic file with information from spfbusdelim. Normally spfbusdelim is set the same as the pre-layout netlist file (default is <>).

Notes:

ParagraphBullet
For SPEF/DSPF files, when the bus_delimiter statement is not used in the parasitic files, the simulator automatically converts braces {} and square brackets []into angle brackets <>.

Examples

1.
The name in the pre-layout netlist file is qn<5> and the name in the SPEF file is qn[5]. If there is no bus_delimiter statement, qn[5] is automatically converted to qn<5> since qn<5> exists in the pre-layout netlist file. The simulator finds the match and stitching is successful.
If bus_delimiter : [] is used in the SPEF file, qn[5] does not change because the Virtuoso UltraSim simulator uses the definition of bus_delimiter specified in the SPEF file. However, there is a mismatch in the pre-layout netlist file because the name is qn<5>. You can use the usim_opt spfbusdelim=<> option to resolve this problem.
2.
The name in the pre-layout netlist file is qn[5] and the name in the SPEF file is qn{5}. If the bus_delimiter : {} statement is located in the SPEF file, qn{5} remains the same (that is, the name is not converted to qn<5>). There is an obvious mismatch between the pre-layout netlist file and the SPEF file. You can set usim_opt spfbusdelim=[] to resolve this problem.

spfcaponly

Spectre Syntax

usim_opt spfcaponly=no|yes

SPICE Syntax

.usim_opt spfcaponly=no|yes

Description

This option controls whether or not to treat a DSPF/SPEF file as a capfile.

Arguments

 

yes

The Virtuoso UltraSim simulator stitches the parasitic file as a node capacitance file (that is, the simulator only parses and backannotates the total node capacitance).

no

The simulator performs a routine parse and backannotation of the DSPF/SPEF file (default).

Example

Spectre Syntax:

usim_opt spfcaponly=yes

SPICE Syntax:

.usim_opt spfcaponly=yes

tells the simulator to read in and backannotate only the total node capacitance of each net.

spfccreport

Spectre Syntax

usim_opt spfccreport=[netname1 netname2]

SPICE Syntax

.usim_opt spfccreport=[netname1 netname2]

Description

This option reports parasitic cross-coupling capacitance for the specified nets and does not apply to any other cross-coupling capacitors in the design. The output is stored in a report file named *.spfcc. and the report is sorted by the first net name. Wildcards are supported (for more information about wildcards, see Wildcard Rules ).

Example

Spectre Syntax:

usim_opt spfccreport=[netA netB]

SPICE Syntax:

.usim_opt spfccreport=[netA netB]

tells the Virtuoso UltraSim simulator to report parasitic cross-coupling capacitance for the nets netA and netB.

The *.spfcc report file that is generated is as follows:

netA netB cc = 1.8e-15

netA netC cc = 1.9e-15

netB netC cc = 1.9e-15

Note that the report is sorted by the first net name and cc is the total parasitic cross-coupling capacitance connected between netA and netB.

spfcrossccap

Spectre Syntax

usim_opt spfcrossccap=on|off

SPICE Syntax

.usim_opt spfcrossccap=on|off

Description

The spfcrossccap option specifies stitching of matched and unmatched coupling capacitors. In general, a coupling capacitor that is instantiated twice in both nets of the capacitor is called a matched coupling capacitor (otherwise, it is called an unmatched coupling capacitor).

Arguments

 

on

Stitches matched and unmatched coupling capacitors.

off

Grounds matched and unmatched coupling capacitors (Default).

Example

Spectre Syntax:

usim_opt spfcrossccap=on

SPICE Syntax:

.usim_opt spfcrossccap=on

tells the Virtuoso UltraSim simulator to search for both matched and unmatched coupling capacitors and to stitch them as coupling capacitors.

spfconn

Spectre Syntax

usim_opt spfconn= "netname subnodename nodename"

SPICE Syntax

.usim_opt spfconn= "netname subnodename nodename"

Description

This option forces a subnode of the specified net to be connected to the specified node. Use this option when you want to connect a subnode to a voltage source or current source. The specified net name and node name must contain the complete hierarchy. In addition, the node name must be present in the simulation database; otherwise, this option will be ignored.

Example

vvdd2 (vdd2 0) vsource dc=1.25 type=dc

usim_opt spfconn="i1.VDD VDD:25 vdd2"

tells UltraSim to connect the subnode VDD:25 of the VDD net in block i1 to a vsource node vdd2.

spfdeletepin

Spectre Syntax

usim_opt spfdeletepin="prelayout_net PIN_subnode"

SPICE Syntax

.usim_opt spfdeletepin="prelayout_net PIN_subnode"

Description

This option disconnects the subnode PIN_subnode from prelayout_net during stitching. Note that PIN_subnode must be specified with the *|P statement belonging to the net prelayoutnet.

When the spfdeletepin option is set, UltraSim handles the subnode PIN_subnode according to the following criteria:

ParagraphBullet
If all PIN_subnode subnodes of the net prelayout_net are set to be deleted,
UltraSim ignores the deletion because the net should contain atleast one PIN_subnode. In such cases, UltraSim displays a warning message in the spfrpt file, as shown below.
WARNING(STITCH-0072)(:5946) : Cannot delete all pins. Option spfdeletepin specified on pin "net0" ignored.
ParagraphBullet
If the subnode PIN_subnode that inherits the prelayout_net name is set to be deleted, UltraSim renames the subnode as PIN_subnode#$$#, and converts it to a normal subnode (|S).
ParagraphBullet
If the subnodes PIN_subnode whose names are different from the prelayout_net name are set to be deleted, UltraSim converts these nodes to a normal subnode (|S).

Example

Spectre Syntax:

usim_opt spfdeletepin="netA netA%1"

usim_opt spfdeletepin="netB netB"

usim_opt spfdeletepin="netC netC"

SPICE Syntax

.usim_opt spfdeletepin="netA netA%1"

.usim_opt spfdeletepin="netB netB"

.usim_opt spfdeletepin="netC netC"

Assuming that the DSPF file contains:

*|NET netA

*|P netA

*|P netA%1

...

*|NET netB

*|P netB

*|P netB%1

...

 

*|NET netC

*|P netC

...

By default, both subnodes netA and netA%1 are shorted to pre-layout netA. However, with the option

.usim_opt spfdeletepin="netA netA%1"

the subnode *|P netA%1 is not shorted to netA. In this case, *|P netA%1 is reduced to *|S. After *|P netA%1 is reduced to *|S, UltraSim only connects *|P netA to the pre-layout net netA.

By default, the subnodes netB and netB%1 are shorted to pre-layout netB. However, with the following option:

.usim_opt spfdeletepin="netB netB"

PIN_subnode *|P netB is reduced to normal subnode *|S, and it is renamed as netB#$$#. Then, UltraSim only shorts *|P netB%1 to the pre-layout net netB.

The option

.usim_opt spfdeletepin="netC netC"

instructs Ultrasim to reduce PIN_subnode *|P netC to normal subnode, but this deletion is prohibited because netC is a unique pin and the spfdeletepin option cannot delete all pins in a net. UltraSim ignores this deletion and displays a warning message, as shown below.

WARNING(STITCH-0072)(:136) : Cannot delete all pins. Option spfdeletepin specified on pin "netC" ignored.

spffingerdelim

Spectre Syntax

usim_opt spffingerdelim="$"

SPICE Syntax

.usim_opt spffingerdelim="$"

Description

The spffingerdelim option specifies the fingered delimiter symbol (default is @). The original device can be split into several devices. For example, a large MOSFET device can be split into several smaller MOSFETs that are connected in parallel. The names for these devices are created by adding the finger postfix to the name of the original device. This postfix normally consists of integers and should be separated from the original name by a special symbol (finger delimiter). If the RC extractor uses any symbol as a finger delimiter, it needs to be specified by spffingerdelim.

Note: To define the delimiter as " or \, the forward slash (\) symbol is required (for example, usim_opt spffingerdelim="\"").

Example

Spectre Syntax:

usim_opt spffingerdelim=@

SPICE Syntax:

.usim_opt spffingerdelim=@

tells the Virtuoso UltraSim simulator that the DSPF file uses the @ symbol as the finger delimiter.

Stitching of Parameterized Subcircuit Instances

Parameterized subcircuits with one level of hierarchy are often used in device modeling of advanced technologies (for example, inline subcircuits in Spectre MOSFET models for 65 nm and below). The Virtuoso UltraSim simulator can also be used to stitch this type of instance.

For example,

In the pre-layout netlist file, xM1 is an instance of the parameterized subcircuit nmos.

xM1 drn gate src gnd nmos W=1u L=0.5u m=1

.subckt nmos drn gate src bulk W=2u L=1u m=1

.param W0=W*2 L0=L+1 Main drn g1 src bulk nfet w=W0 L=L0

R1 gate g1 2

.model nmos nfet level=49 version=3.2 ...

.ends

The instance section of the DSPF file contains the following:

*Instance Section

xM1 xM1:drn xM1:gate xM1:src xM1:bulk NMOS w=1.4u L=0.6u m=1

After stitching, the w (width) and l (length) parameters for xM1.Main are 2.8 u and 1.6 u, respectively.

spfhierdelim

Spectre Syntax

usim_opt spfhierdelim="."

SPICE Syntax

.usim_opt spfhierdelim="."

Description

This option specifies the hierarchical delimiter in the DSPF and SPEF files, and the cap file. If spfhierdelim and the hierarchical divider statement in the DSPF file are set, the hierarchical divider in the DSPF and SPEF file has a higher priority (the default is /).

Note: To define the delimiter as " or \, the forward slash (\) symbol is required (for example, usim_opt spfhierdelim="\"").

Example

Spectre Syntax:

usim_opt spfhierdelim=.

SPICE Syntax:

.usim_opt spfhierdelim=.

tells the Virtuoso UltraSim simulator to treat the period (.) symbol in the cap file as the hierarchical delimiter for cap file stitching.

spfinstancesection

Spectre Syntax

usim_opt spfinstancesection=on|off

SPICE Syntax

.usim_opt spfinstancesection=on|off

Description

This option controls the backannotation of device parameters in the instance section of the DSPF file. It is only applicable to the DSPF file specified by the spf option, and it does not apply to the SPEF, DPF, or cap files. If spfinstancesection is turned off, the instance section is ignored (that is, the device parameters are not changed during stitching). The default is on.

Examples

In the following Spectre syntax example

usim_opt spf=a.dspf spfinstancesection=off dpf=a.dspf

tells the Virtuoso UltraSim simulator not to stitch the instance section for a.dspf because the a.dspf file is first defined by the spf option and spfinstancesection is set to off. The simulator then stitches the device section because a.dspf is defined next by the dpf option.

The following SPICE syntax example has the same outcome as the previous example.

.usim_opt spf=a.dspf (with default pfinstancesection being on)

spfipin

Spectre Syntax

usim_opt spfipin="net_name pin_name instance:port"

SPICE Syntax

.usim_opt spfipin="net_name pin_name instance:port"

Where:

ParagraphBullet
net_name is an extracted net.
ParagraphBullet
pin_name is a pin that belongs to net net_name.
ParagraphBullet
instance is a package model instance.
ParagraphBullet
port is one of the ports in the instance.

Description

This option connects the package model with the power network. Package modeling enables you to model the effects on package pins and related circuit, such as bond wire inductance, capacitance, and resistance. Package models are commonly used in advanced EMIR flow. These are presented in the pre-layout netlist as subckt and are passed to the second stage EMIR simulation. When you use the spfipin option, the software connects the specified pin pin_name to the port in the package instance.

Example

The use model for package modeling is as follows:

1.
Specify the package subckt definition in the pre-layout netlist, as shown below:
-----------------------------------
* subckt definition
.subckt rlc in out r=r l=l c=c
R in i r
C i 0 c
L i out l
.ends
-----------------------------------
2.
Connect the external voltage source to the net through the package subckt in the pre-layout netlist. In the example below, two vsources VSRC_1 and VSRC_2 are connected to the same net VDD (however, physically they are connected to different pins VDD_1, VDD_2), through two rlc package models, XVDD_1 and XVDD_2.
-----------------------------------
VSRC_1 vpad_1 0 2.51
VSRC_2 vpad_2 0 2.49
XVDD_1 vpad_1 VDD rlc r=1 l=1n c=10f
XVDD_2 vpad_2 VDD rlc r=1 l=1n c=10f
-----------------------------------
Note: Power supply (isource) and voltage source (vsource) are the only components that are assumed to be connected to the package model.
3.
Use the spfipin option to connect the different pins. For example, connect XVDD_1:out to pin VDD_1 of net VDD, and connect XVDD_2:out to pin VDD_2 of net VDD. Here ":" is the spf delimiter, XVDD_1 and XVDD_2 are the instances of subckt rlc, and out is a port of the subckt.
Note: The pins names are derived from the spf file.
-----------------------------------
.usim_opt spfipin="VDD VDD_1 XVDD_1:out"
.usim_opt spfipin="VDD VDD_2 XVDD_2:out"
-----------------------------------
These options establish the connections of two package model instances with the power net VDD. In other words, these options will connect XVDD_1:out to pin VDD_1 of net VDD, and XVDD_2:out to pin VDD_2 of net VDD. The connections are shown in Figure 4-4.

Figure 4-4  Package Model Instances Connection with Power Net VDD


4.
Run the simulation. The package models are passed to the second stage and simulated.

Important Considerations

ParagraphBullet
The package modeling solution is available only in the advanced EMIR (two-stage) flow (.usim_ups solver=2).
ParagraphBullet
While package subckts can be hierarchical, leaf elements of only RCLK types are allowed. The element values can be any regular mathematical expressions containing constant parameters.
ParagraphBullet
Multiple spfipin options can be applied to the same net, each one for a particular pin.
ParagraphBullet
Any net pin without any spfipin connection is directly connected to the voltage source for the net.
ParagraphBullet
No EMIR results are reported on package subckt nodes/resistors.

spfkeepcoupling

Spectre Syntax

usim_opt spfkeepcoupling=on|off

SPICE Syntax

.usim_opt spfkeepcoupling=on|off

Description

This option determines whether the coupling capacitances should be kept while parsing parasitic files.

 
ParagraphBullet
spfkeepcoupling is only applicable when spfactivenet or spfrcnet are enabled.

When this option is set to on, the Virtuoso UltraSim simulator keeps the coupling capacitances as per the following criteria:

ParagraphBullet
If both nets, that is, the terminals of the coupling capacitances, are expanded with R and C, then the software uses the regular stitching mechanism for coupling capacitances.
ParagraphBullet
If only one of the two terminals of the coupling capacitance is expanded with R and C, and the other terminal is ignored during stitching or expanded with lumped C only, the stitching of this coupling capacitance on the terminal with RC expansion will be the same as any regular coupling capacitance, whereas the other terminal of this coupling capacitance will be connected to the pre-layout net.
ParagraphBullet
If neither of the two terminals of the coupling capacitance is specified as spfrcnet or spfactivenet, then the coupling capacitance is discarded.

When spfkeepcoupling is set to off (default), the Virtuoso UltraSim simulator does not keep coupling capacitances while parsing parasitic files.

Example

Spectre Syntax:

usim_opt spfrcnet=net_A

usim_opt spfrcnet=net_B

usim_opt spfkeepcoupling=on

SPICE Syntax

.usim_opt spfrcnet=net_A

.usim_opt spfrcnet=net_B

.usim_opt spfkeepcoupling=on

If:

1.
there is a coupling capacitance between net_A and net_B, and
2.
there is a coupling capacitance between net_A and net_C, and
3.
there is a coupling capacitance between net_C and net_D

then the behavior will be as follows:

1.
expand RC for net_A and net_B, and stitch lumped C on net_C and net_D.
2.
stitch the coupling capacitance between net_A and net_B.
3.
for the coupling capacitance between net_A and net_C, on the net_A side, stitch the coupling capacitance as regular coupling capacitance, and on the net_C side, connect the coupling capacitance to the pre-layout net_C.

The coupling capacitance between net_C and net_D is not stitched. It is considered as part of total capacitances for both net_C and net_D in the DSPF file already.

spfkeepbackslash

Spectre Syntax

usim_opt spfkeepbackslash=on|off

SPICE Syntax

.usim_opt spfkeepbackslash=on|off

Description

The spfkeepbackslash option defines the back slash (\) symbol, used for net, instance, and other design component names, as a normal character instead of an Escape character (default is off).

Example

Spectre Syntax:

usim_opt spfkeepbackslash=on

SPICE Syntax

.usim_opt spfkeepbackslash=on

tells the Virtuoso UltraSim simulator to treat the \ symbol as a normal character.

spfnegvalue

Spectre Syntax

usim_opt spfnegvalue=0 | 1

SPICE Syntax

.usim_opt spfnegvalue=0 | 1

Description

This option determines whether to accept negative device parameters, negative parasitic resistors, and negative parasitic capacitors from DSPF/SPF/DPF files.

When this option is set to be 0, the software ignores negative device parameters, negative parasitic resistors, and negative parasitic capacitors in DSPF/SPF/DPF files. The default behavior is to accept negative device parameters, negative parasitic resistors, and negative parasitic capacitors from DSPF/SPF/DPF files.

Default: 1

Example

Spectre Syntax

usim_opt spfnegvalue=0

SPICE Syntax

.usim_opt spfnegvalue=0

tells UltraSim to ignore negative device parameters, negative parasitic resistors, and negative parasitic capacitors.

spfnetpin

Spectre Syntax

usim_opt spfnetpin="prelayout_net subnode"

SPICE Syntax

.usim_opt spfnetpin="prelayout_net subnode"

Description

This option enables you to specify an extra pad to a net. subnode specifies a subnode in the DSPF file. The subnode could be defined in a *|P, *|I or *|S statement. prelayout_net is the net name to which the subnode belongs.

Note: prelayout_net and subnode must have the full hierarchical path.

When spfnetpin is specified, the behavior of the Virtuoso UltraSim simulator is as follows:

ParagraphBullet
The specified subnode is shorted to the pre-layout net.
ParagraphBullet
If there is a subnode or pin that has the same name as the net name in *|NET statement, then the subnode or pin is shorted to the pre-layout net.
ParagraphBullet
If there is one *|P statement, the specified subnode or pin will be shorted to the pre-layout net. If there are multiple subnodes or pins, all of them will be shorted to the pre-layout net unless they are part of the hierarchical DSPF/SPEF system.
ParagraphBullet
One of the *|I or *|S statements is randomly chosen to be shorted to pre-layout net.

Example

Spectre Syntax:

usim_opt spfnetpin="NETA M1:drn"

SPICE Syntax

.usim_opt spfnetpin="NETA M1:drn"

Assuming that the DSPF file contains:

*|NET A

*|P NETA …

*|I M1:drn…

*|I M2:drn

*|S netA:1

UltraSim will connect M1:drn to the pre-layout net NETA. Note that the pin *|P netA is shorted to pre-layout NETA as well. If you want to disconnect this pin from the pre-layout NETA, spfdeletepin option will be needed.

spfparadiodes

Spectre Syntax

usim_opt spfparadiodes = 0 | 1

SPICE Syntax

.usim_opt spfparadiodes= 0 | 1

Description

This option enables you to automatically detect the parasitic primitive diodes in DSPF/DPF files and stitch them accordingly. Parasitic diodes, for example, the parasitic nwell diodes, are layout-specific diodes, which do not have a counterpart in the schematic netlist.

Set this option to 0 to ignore the parasitic primitive diodes during stitching. When this option is set to 1, the simulator automatically detects the parasitic primitive diodes in DSPF/DPF files and stitches them accordingly.

Default: 1

Example

.usim_opt spfparadiodes=0

tells UltraSim to ignore the parasitic primitive diodes during stitching.

spfrcreduction

Spectre Syntax

usim_opt spfrcreduction=on|off

SPICE Syntax

.usim_opt spfrcreduction=on|off

Description

The spfrcreduction option controls RC reduction during RC stitching. If spfrcreduction is on (default), the RC reduction algorithm can be applied during stitching (depending on how the RC reduction options are set). Using this option can improve simulation performance and memory. If spfrcreduction is off, RC reduction is not applied during stitching, regardless of the RC reduction option settings.

Example

Spectre Syntax:

usim_opt spfrcreduction=on

SPICE Syntax:

.usim_opt spfrcreduction=on

tells the Virtuoso UltraSim simulator to perform RC reduction during RC stitching if the RC reduction options, such as postl (1|2|3|4), are enabled. If postl=0, the simulator does not perform RC reduction, even it spfrcreduction=on.

spfrecover

Spectre Syntax

usim_opt spfrecover=0|1|2|3|4

SPICE Syntax

.usim_opt spfrecover=0|1|2|3|4

Description

This option controls how the Virtuoso UltraSim simulator handles erroneous parasitic nets. If the definition of a net in a parasitic file contains an error, you can use the spfrecover option to control how this erroneous net is stitched.

Arguments

 

0

Erroneous nets are not stitched.

1

Only the total capacitance is stitched for an erroneous net.

2

The Virtuoso UltraSim simulator takes some corrective measures for erroneous nets. For an instance:

After the simulator makes these corrections, if the net still has errors in its parasitic definitions, only the total capacitance of the net is stitched.

3

The simulator tries to stitch swapped devices and devices with gate swapping, along with the elements described in level 2.

4

To speed up the stitching process, the simulator tries to stitch what can be stitched and discard any devices and subnodes that have errors without any repair. This is recommended for big nets, such as for the power nets of a full-chip design when the performance of spfrecover=2|3 is not good enough (Default).

Example

Spectre Syntax:

usim_opt spfrecover=3

SPICE Syntax:

.usim_opt spfrecover=3

tells the Virtuoso UltraSim simulator to accept nodes associated with instances not found in the pre-layout netlist file. The simulator keeps the original connectivities of all instances that are missing in the DSPF/SPEF file, but exist in the pre-layout netlist file, and also tries to stitch swapped devices. If erroneous nets still exist after all of the corrective measures are taken by the simulator, it then tries to stitch the total capacitances.

spfscalec

Spectre Syntax

usim_opt spfscalec=value

SPICE Syntax

.usim_opt spfscalec=value

Description

This option specifies the scale factor for parasitic capacitors (default is 1.0).

Note: The pre-layout capacitors are not affected by spfscalec.

Example

Spectre Syntax:

usim_opt spfscalec=1.5

SPICE Syntax:

.usim_opt spfscalec=1.5

tells the Virtuoso UltraSim simulator to scale all the capacitors in the parasitic file by 1.5 times during stitching.

spfscalecrossc

Spectre Syntax

usim_opt spfscalecrossc=value

SPICE Syntax

.usim_opt spfscalecrossc=value

Description

Through the spfcrosscap=off option, UltraSim splits a cross coupling capacitor to two grounded coupling capacitors. The spfscalecrossc option instructs UltraSim to scale the value of these grounded coupling capacitors according to the following criteria:

ParagraphBullet
If the terminal net of the coupling capacitor is stitched with R and C, the grounded coupling capacitor value is scaled by the factor you specify.
ParagraphBullet
If the terminal net of the coupling capacitor is stitched only with total C, the Ctotal value is recalculated as Cload(from dspf) - total_couplingC * (1-factor).

The value of the grounded coupling capacitors is also scaled during the second stage of the advanced EMIR flow.

Note: The spfscalecrossc option works only when the spfcrosscap option is set as off.

Example

Spectre Syntax:

usim_opt spfscalecrossc=0.6

SPICE Syntax:

.usim_opt spfscalecrossc=0.6

tells the Virtuoso UltraSim simulator to scale the grounded coupling capacitor by a factor of 0.6.

For example, assuming a cross coupling capacitor CAB exists between the nets A and B in the dspf file, and the spfcrosscap=off option is set,

*|NET A 0.010PF
*|NET B 0.015PF
CAB A B 4e-15

UltraSim splits the cross coupling capacitor CAB to two grounded coupling capacitors CA and CB. The spfscalecrossc option instructs UltraSim to scale the value of the CA and CB grounded coupling capacitors according to the following criteria:

ParagraphBullet
If net A is stitched with R and C, the grounded coupling capacitor CA is scaled by a factor of 0.6, and calculated as 4e-15*0.6=2.4e-15.
CA#### A 0 2.4e-15
ParagraphBullet
If net B is stitched only with total C, the Ctotal value of net B is recalculated as
0.015e-12 - 4e-15*(1-0.6)=13.4e-15.
CB#### B 0 13.4e-15

spfscaler

Spectre Syntax

usim_opt spfscaler=value

SPICE Syntax

.usim_opt spfscaler=value

Description

This option specifies the scale factor for parasitic resistors (default is 1.0).

Note: The pre-layout resistors are not affected by spfscaler.

Example

Spectre Syntax:

usim_opt spf spfscaler=2.0

SPICE Syntax:

.usim_opt spf spfscaler=2.0

tells the Virtuoso UltraSim simulator to scale all the resistors in the parasitic file by a multiple of two during stitching.

spfserres

Spectre Syntax

usim_opt spfserres=instance_name

SPICE Syntax

.usim_opt spfserres=instance_name

Description

This option specifies the instance name of the resistor that has serial fingers.

Use this option to stitch serial resistance fingers correctly. At times, a schematic resistor with large resistance value is represented as serpentine resistors in the layout, as shown below:


These serpentine resistors are extracted as serial resistor fingers for the schematic resistor.

Note: You can specify multiple instance names using multiple spfserres options.

Example

Spectre Syntax:

usim_opt spfserres=X1.XRR1

In the above example, X1.XRR1 is the instance name of a schematic resistor, which is represented by resistors that have two or more serial fingers. This setting ensures the correct stitching of the X1.XRR1 schematic resistor.

SPICE Syntax:

.usim_opt spfserres=X1.XRR1

In the above example, X1.XRR1 is the instance name of a schematic resistor, which is represented by resistors that have two or more serial fingers. This setting ensures the correct stitching of the X1.XRR1 schematic resistor.

spfserresmod

Spectre Syntax

usim_opt spfserresmod=model_name|subckt_name

SPICE Syntax

.usim_opt spfserresmod=model_name|subckt_name

Description

This option specifies the model or subckt name for resistors that have serial fingers. When a model or a subckt is used for a resistor, it typically signifies the boundary of extraction.

Use this option to stitch serial resistance fingers correctly. At times, a schematic resistor with large resistance value is represented as serpentine resistors in the layout, as shown below:


These serpentine resistors are extracted as serial resistor fingers for the schematic resistor.

Note: You can specify multiple model names and/or subckt names using multiple spfserresmod options.

Example

Spectre Syntax:

usim_opt spfserresmod=POLY

In the above example, POLY is the model name. This setting ensures the correct stitching of a schematic resistor, which is represented by resistors that have two or more serial fingers, and is an instance of the model POLY.

SPICE Syntax:

.usim_opt spfserresmod=POLY

In the above example, POLY is the model name. This setting ensures the correct stitching of a schematic resistor, which is represented by resistors that have two or more serial fingers, and is an instance of the model POLY.

spfskipncap

Spectre Syntax

usim_opt spfskipncap=[netname1 netname2]

SPICE Syntax

.usim_opt spfskipncap=[netname1 netname2]

Description

This option searches for pre-layout capacitors that do not have their counterparts in the DSPF/SPEF file for the specified nets. The search algorithm is based on the assumption that the estimated capacitors only exist in the pre-layout netlist but do not show up in the DSPF/SPEF file. When such a capacitor is found, UltraSim issues a warning about the capacitor and removes it from the simulation database.

This command is applicable to both cross-coupling capacitors and ground capacitors in the pre-layout netlist. Wildcards are supported (for more information on wildcards, see Wildcard Rules ).

Note: It is recommended that you use this command only when the design is LVS clean, that is, there is one-to-one corresponding relationship for design devices in the pre-layout netlist and the DSPF/SPEF file. This avoids design capacitors from being removed mistakenly.

UltraSim prints the following message in the log file to indicate how many estimated capacitors in the pre-layout are skipped.

Messages statistics

=====================

Skipped estimated capacitors 6

Note: This option is independent of net-based selective stitching, which includes spfrcnet and spfactive.

Example

Spectre Syntax:

usim_opt spfskipncap=[netA]

SPICE Syntax:

.usim_opt spfskipncap=[netA]

tells the Virtuoso UltraSim simulator to search the missing capacitors in the DSPF/SPEF file for netA. If found, the capacitors are skipped.

spfsplitfinger

Spectre Syntax

usim_opt spfsplitfinger=on|off

SPICE Syntax

.usim_opt spfsplitfinger=on|off

Description

This option specifies whether all fingers are simulated as individual devices (spfsplitfinger=on) or all fingers are merged into one device and average values, such as width and length, are applied to the device (spfsplitfinger=off).

When .usim_emir is specified in the netlist, the default value is spfsplitfinger=on. When it is not, the default value is spfsplitfinger=off.

Example

Spectre Syntax

usim_opt spfsplitfinger=on

SPICE Syntax

.usim_opt spfsplitfinger=on

Specifies that all fingers should be simulated as individual devices.

spfswapterm

Spectre Syntax

usim_opt spfswapterm="terminal1 terminal2 subckt"

SPICE Syntax

.usim_opt spfswapterm="terminal1 terminal2 subckt"

Description

This option allows the swapping of terminal1 and terminal2 of subckt during stitching. UltraSim stitching considers terminals swappable for the following primitive devices:

ParagraphBullet
Drain and source of a primitive MOSFET
ParagraphBullet
Two terminals of a capacitor
ParagraphBullet
Two terminals of a resistor

This sometimes causes stitching problems if the primitive device, say a MOSFET, is modeled by a parameterized subckt that is complicated. For example,

.subckt mosfet d g s b w1=1 l1=1
m1 d g s b nmos w=w1 l=l1
d1 s b didoe
d2 d b didoe
.ends

In this example, due to the existence of diodes, stitching considers d and s to be non-swappable. However, using the option spfswapterm, you can define d and s to be swappable for the purpose of stitching.

Example

Spectre Syntax:

usim_opt spfswapterm="n1 n2 npres"

SPICE Syntax:

.usim_opt spfswapterm="n1 n2 npres"

tells the Virtuoso UltraSim simulator that the terminals n1 and n2 of the subckt npres are swappable terminals.

spfxtorintop

Spectre Syntax

usim_opt spfxtorintop=yes|no

SPICE Syntax

.usim_opt spfxtorintop=yes|no

Description

This option helps stitching of primitive elements at the top-level within the extraction scope. It is used along with spfxtorprefix. When spfxtorintop is set to yes (default), the substitution specified by spfxtorprefix is applicable not only to top-level primitive elements but also to top-level instances names.

Example

This is an example of primitive elements at the top-level within the extraction scope. Consider that subckt s1 is extracted. This subckt is defined in the pre-layout as:

subckt s1 in out vss vdd
N1 out1 in vss vss nmos w=1 l=0.5
P1 out1 in vdd vdd pmos w=2 l=0.5
X1 out1 out vss vdd inv
ends

 

subckt in out inv
M1 out in vss vss nmos w=2 l=0.5
M2 out in vdd vdd pmos w=4 l=0.5
ends

In the extracted DSPF for subckt s1, the primitive element N1 is at the top-level of the extraction scope subckt s1. If the element name in the DSPF file for element N1 is MN1, the following option helps the stitching process find the right match:

.usim_opt spfxtorintop=yes
.usim_opt spfxtorprefix="MN N"

spfxtorprefix

Spectre Syntax

usim_opt spfxtorprefix="<substring> [<replace_substring>]"

SPICE Syntax

.usim_opt spfxtorprefix="<substring> [<replace_substring>]"

Description

The spfxtorprefix option replaces substring (that is, the xtorprefix used in the RC extractor) with replace_substring. Based on the requirement that a DSPF file must be used as a HSPICE netlist file, all MOSFETs need to begin with the m symbol, all diodes with the d symbol, and so on. The hierarchical names for devices must contain leading symbols based on type, in order for HSPICE to recognize the names. Some RC extractors append a different prefix to the hierarchical name, such as MX (this prefix is considered a xtorprefix).

To match the device names in the parasitic file with the names in the pre-layout netlist file, you need to specify spfxtorprefix to be the same as what is used by the RC extractor. If it becomes necessary to change the xtorprefix substring to a different substring, specify the replace_substring option. There is no limit to the number of xtorprefices that you can specify (default is none).

Example

Spectre Syntax:

usim_opt spfxtorprefix="MX_ X" spfxtorprefix="D" spfxtorprefix="R XI"

SPICE Syntax:

.usim_opt spfxtorprefix="MX_ X" spfxtorprefix="D" spfxtorprefix="R XI"

tells the Virtuoso UltraSim simulator to replace all instance names starting with MX_ with X, to remove the D prefix from all instance names starting with D, and to replace prefix R in all instance names with XI.

Selective RC Backannotation

The Virtuoso UltraSim simulator supports a set of options for selective RC backannotation. All the options listed in this section are global.

The simulator supports the following selective RC backannotation options:

ParagraphBullet
spfactivenet
ParagraphBullet
spfactivenetfile
ParagraphBullet
spfchlevel
ParagraphBullet
spfcnet
ParagraphBullet
spfcnetfile
ParagraphBullet
spfhlevel
ParagraphBullet
spfnetcmin
ParagraphBullet
spfrcnet
ParagraphBullet
spfrcnetfile
ParagraphBullet
spfskipnet
ParagraphBullet
spfskipnetfile
ParagraphBullet
spfskippwnet
ParagraphBullet
spfskipsignet

spfactivenet

Spectre Syntax

usim_opt spfactivenet=net_name

SPICE Syntax

.usim_opt spfactivenet=net_name

Description

This option specifies the nets to be stitched by name (default is none). All other nets are ignored and will not be stitched. Wildcards are supported and you can specify as many nets as needed.

For more information about wildcards, see "Wildcard Rules".

Note: When multiple nets are specified, the Virtuoso UltraSim simulator requires the nets to be on separate lines (see example below).

Example

Spectre Syntax:

usim_opt spfactivenet=nodeA

usim_opt spfactivenet=nodeB

SPICE Syntax:

.usim_opt spfactivenet=nodeA

.usim_opt spfactivenet=nodeB

tells the Virtuoso UltraSim simulator to stitch the parasitics associated only with nodeA and nodeB (all other nets are not stitched).

spfactivenetfile

Spectre Syntax

usim_opt spfactivenetfile=<file_name>

SPICE Syntax

.usim_opt spfactivenetfile=<file_name>

Description

This option allows you to specify the nets that need to be stitched as a list in a text file called file_name (only one file can be specified).

It is important to note if spfactivenet or spfactivenetfile is defined, only the specified nets are stitched. Also, you can use the acheck statement to generate the active nets file.

Example

Spectre Syntax:

usim_opt spfactivenetfile=nets.tex

SPICE Syntax:

.usim_opt spfactivenetfile=nets.tex

nets.tex file format:

netA

netB

netC

tells the Virtuoso UltraSim simulator to stitch the parasitics associated with the nets specified in the nets.tex file, and to ignore the other nets.

spfchlevel

Spectre Syntax

usim_opt spfchlevel=value

SPICE Syntax

.usim_opt spfchlevel=value

Description

The spfchlevel option allows you to select the net for stitching by its hierarchy level. If the net name has a hierarchy level less than spfchlevel, the net is stitched (otherwise, only the total capacitance is added to the net node). The default is 1000 or the lowest level.

Example

Spectre Syntax:

usim_opt spfchlevel=10

SPICE Syntax:

.usim_opt spfchlevel=10

tells the Virtuoso UltraSim simulator to stitch nets that have a hierarchical level < 10.

spfcnet

Spectre Syntax

usim_opt spfcnet=net_name

SPICE Syntax

.usim_opt spfcnet=net_name

Description

This option specifies the net that will have its total capacitance stitched. All other parasitic components associated with this net are ignored (default is none). Wildcards are supported and you can specify as many nets as needed. All other nets will be stitched with R and C.

For more information about wildcards, see "Wildcard Rules".

Example

Spectre Syntax:

usim_opt spfcnet=netA

SPICE Syntax:

.usim_opt spfcnet=netA

tells the Virtuoso UltraSim simulator to stitch only the total capacitance of netA and to ignore other parasitics associated with netA.

spfcnetfile

Spectre Syntax

usim_opt spfcnetfile=<file_name>

SPICE Syntax

.usim_opt spfcnetfile=<file_name>

Description

This option has the same functionality as spfcnet with the exception that all the nets are specified as a list in a file named file_name. Only one file can be specified.

Example

Spectre Syntax:

usim_opt spfcnetfile=nets.tex

SPICE Syntax:

.usim_opt spfcnetfile=nets.tex

nets.tex file format:

netA

netB

netC

tells the Virtuoso UltraSim simulator to stitch only the total node capacitance for all nets specified in the nets.tex file, and to ignore all the other parasitics associated with these nets.

spfhlevel

Spectre Syntax

usim_opt spfhlevel=value

SPICE Syntax

.usim_opt spfhlevel=value

Description

This option allows you to select the net for stitching by its hierarchy level. If a net name has a hierarchy level more than or equal to spfhlevel, all the parasitics associated with the net are stitched (otherwise, only the total capacitance is added to the net node). The default is -1 or the top level.

Example

Spectre Syntax:

usim_opt spfhlevel=10

SPICE Syntax:

.usim_opt spfhlevel=10

spfnetcmin

Spectre Syntax

usim_opt spfnetcmin=value

SPICE Syntax

.usim_opt spfnetcmin=value

Description

The spfnetcmin option allows you to select the net for stitching by the value of its total node capacitance. If the total node capacitance exceeds spfnetcmin, the net is stitched. That is, all the parasitics associated with the net are stitched correctly (otherwise, only the total capacitance is added to the net node). The default is 0.0.

Example

Spectre Syntax:

usim_opt spfnetcmin=1ff

SPICE Syntax:

.usim_opt spfnetcmin=1ff

tells the Virtuoso UltraSim simulator to stitch the nets, including all the parasitic components of the nets, with a total node capacitance > 1 ff (if the total capacitance is less than or equal to 1 ff, only the total capacitance is stitched).

spfrcnet

Spectre Syntax

usim_opt spfrcnet=net_name

SPICE Syntax

.usim_opt spfrcnet=net_name

Description

This option specifies the name of the net to be stitched with parasitic resistors and capacitors. The other nets are stitched with lumped capacitances. Multiple nets can be specified on separate lines.

Example

Spectre Syntax:

usim_opt spfrcnet=vcc

usim_opt spfrcnet=gnd

SPICE Syntax:

.usim_opt spfrcnet=vcc

.usim_opt spfrcnet=gnd

tells the Virtuoso UltraSim simulator to stitch parasitic resistors and capacitors for both vcc and gnd nets and to stitch all other nets with lumped capacitances.

spfrcnetfile

Spectre Syntax

usim_opt spfrcnetfile=<file_name>

SPICE Syntax

.usim_opt spfrcnetfile=<file_name>

Description

This option allows you to specify the nets that need to be stitched as a list in the specified file_name (only one file can be specified).

 
ParagraphBullet
If spfrcnet or spfrcnetfile is defined, only the specified nets are stitched with RC and the remaining nets in the DSPF/SPEF files are stitched with C-only.

Example

Spectre Syntax:

usim_opt spfrcnetfile=nets.tex

SPICE Syntax:

.usim_opt spfrcnetfile=nets.tex

nets.tex file takes the following format:

netA

netB

netC

tells the Virtuoso UltraSim simulator to stitch the parasitic RC associated with the nets specified in the nets.text file, and to stitch C only for the rest of the nets in the DSPF file.

spfskipnet

Spectre Syntax

usim_opt spfskipnet=net_name

SPICE Syntax

.usim_opt spfskipnet=net_name

Description

This option specifies the name of the net to be skipped, that is, all parasitic components of this net are not stitched (default is none). Wildcards are supported and you can specify as many nets as needed. All other nets will be stitched with R and C.

For more information about wildcards, see "Wildcard Rules".

Note: If multiple nets need to be specified, the nets must be placed in separate lines.

Example

Spectre Syntax:

usim_opt spfskipnet=nodeA

SPICE Syntax:

.usim_opt spfskipnet=nodeA

tells the Virtuoso UltraSim simulator not to stitch the parasitics associated with nodeA.

spfskipnetfile

Spectre Syntax

usim_opt spfskipnetfile=file_name

SPICE Syntax

.usim_opt spfskipnetfile=file_name

Description

This option allows you to specify the nets to be skipped as a list in a text file called file_name. Only one file can be specified.

Example

Spectre Syntax:

usim_opt spfskipnetfile=nets.tex

SPICE Syntax:

.usim_opt spfskipnetfile=nets.tex

nets.tex file format:

netA

netB

netC

tells the Virtuoso UltraSim simulator not to stitch the parasitics associated with netA, netB, and netC.

Note: The net names in the file need to be located on separate lines.

spfskippwnet

Spectre Syntax

usim_opt spfskippwnet=on|off

SPICE Syntax

.usim_opt spfskippwnet=on|off

Description

This option allows you to skip stitching for parasitics associated with the nets that are connected to DC voltage sources. These nets usually contain a large number of parasitics, and in most types of analyses, do not affect the simulation results and can be omitted. If the stitching of power nets is important, set spfskippwnet to off. The default is on.

Example

Spectre Syntax:

usim_opt spfskippwnet=off

SPICE Syntax:

.usim_opt spfskippwnet=off

tells the Virtuoso UltraSim simulator to stitch the parasitics of nets connected to DC voltages.

spfskipsignet

Spectre Syntax

usim_opt spfskipsignet=on|off

SPICE Syntax

.usim_opt spfskipsignet=on|off

Description

The spfskipsignet option allows you to skip stitching for parasitics associated with signal nets (default is off).

Note: If spfskippwnet=on and spfskipsignet=on, no single nets are stitched.

Example

Spectre Syntax:

usim_opt spfskipsignet=on

SPICE Syntax:

.usim_opt spfskipsignet=on

tells the Virtuoso UltraSim simulator to ignore stitching parasitics for all the signal nets.

Error/Warning Message Control Options for Stitching

The Virtuoso UltraSim simulator prints out detailed error and warning messages generated during stitching in the netlistname.spfrpt file. In addition, a cumulative (statistics) report is printed to the screen and the log file.

Errors that cannot be corrected are issued as error messages and correctable errors are issued as warning messages. The error and warning messages are categorized according to the nature of the messages. The default number of error and warning messages for each category is 50. If you need to see more messages, increase the limit with the spfmsglimit option. You can also control the level of reporting with the spferrorreport option.

The Virtuoso UltraSim simulator supports the following error and warning message control options for stitching:

spferrorreport

Spectre Syntax

usim_opt spferrorreport=0|1|2

SPICE Syntax

.usim_opt spferrorreport=0|1|2

Description

Use this option to specify the level of error reporting.

Arguments

 

0

Reporting is turned off.

1

Only error and warning messages are printed in the file.

2

All messages are printed in the file (Default).

Example

Spectre Syntax:

usim_opt spferrorreport=0

SPICE Syntax:

.usim_opt spferrorreport=0

tells the Virtuoso UltraSim simulator not to report any information (error, warning, or information messages).

spfmsglimit

Spectre Syntax

usim_opt spfmsglimit='number STITCH-ID_1 STITCH-ID_2'

SPICE Syntax

.usim_opt spfmsglimit='number STITCH-ID_1 STITCH-ID_2'

Description

Specifies the maximum number of messages within a specified message category identifier number (STITCH-ID) to be printed in .spfrpt file. This means that the number of messages printed for a message category does not exceed the specified number limit. When a STITCH-ID is not specified, the software assigns the maximum message number limit to all message categories (STITCH-IDs).

If you do not specify a number, the software assigns the maximum limit of 50 (default) messages for each message category (STITCH-ID).

Note: This option replaces spfmaxerrormsg and spfmaxwarnmsg. spfmaxerrormsg and spfmaxwarnmsg are internally converted to spfmsglimit.

Examples

Example 1

.usim_opt spfmsglimit="10 STITCH-0010"

tells Ultrasim to print no more than 10 messages for the STITCH-0010 message category. For the other message categories, the default maximum limit of 50 messages will apply.

Example 2

.usim_opt spfmsglimit="1000000"

.usim_opt spfmsglimit="5 STITCH-0020"

tells Ultrasim to print all the messages no more than 1000000 times except for the messages in category STITCH_0020 for which the software will print the messages no more than 5 times.

 
ParagraphBullet
It is recommended that you go through each category reported in the .spfrpt file, understand the cause of the messages, and then limit the number of messages to be printed. This will ensure that the .spfrpt file contains only the relevant messages.

Stitching Statistical Reports

The Virtuoso UltraSim simulator reports stitching statistics in a log file (for example, how many resistors or capacitors are stitched). The following is an example of a stitching report:

Reading SPF file ./ring_top.spef line 32 ( 2.5% )

Reading SPF file ./ring_top.spef line 160 (19.7% )

Reading SPF file ./ring_top.spef line 285 (36.6% )

Reading SPF file ./ring_top.spef line 405 (51.2% )

Reading SPF file ./ring_top.spef line 533 (68.5% )

Reading SPF file ./ring_top.spef line 658 (85.4% )

Reading SPF file ./ring_top.spef line 777 (100.0% )

SPF Parsing: user time: 0:00:00 (0.010 sec), system time: 0:00:00 (0.000 sec),
real time: 0:00:00 (0.010 sec)

SPF Parsing: memory: 0 B total: 15.2684 MB

SPF Collect nets: user time: 0:00:00 (0.000 sec), system time: 0:00:00 (0.000 sec),
real time: 0:00:00 (0.000 sec)

SPF Collect nets: memory: 0 B total: 15.2684 MB

Back annotation: user time: 0:00:00 (0.000 sec), system time: 0:00:00 (0.000 sec),
real time: 0:00:00 (0.000 sec)

Back annotation: memory: 131.0399 KB total: 15.3994 MB

-------------------------------------------------------------------------------

Nets | parsed 6| expanded 6| errors 0

Capacitors| parsed 485| expanded 141| stitch 70

Resistors | parsed 110| expanded 98| stitch 49

New nodes | added 90| | net coll 3

-------------------------------------------------------------------------------

nets stitched with C-only 0 nets stitched with RC 6

-------------------------------------------------------------------------------

0 errors and 13 warnings are issued (see file "my_input.spef.spfrpt")

-------------------------------------------------------------------------------

Messages statistics

=====================

Shortened R/C excluded 6

Dangling R/C terminal 12

Subckt is detected with top path 1

Instance is duplicated or fingered 6

Frequently Asked Questions

How can I minimize memory consumption?

When simulating a flat post-layout design, you may run out of memory. To minimize memory consumption, use one of the following Virtuoso UltraSim simulator options.

keepparaname

Spectre Syntax

usim_opt keepparaname=0|1

SPICE Syntax

.usim_opt keepparaname=0|1

Description

The keepparaname option allows you to choose between preserving or not preserving the names of RC elements during parsing (default is 1). The option reduces memory usage when the names are not preserved and is only applicable to designed RCs (not parasitic RCs if the parasitics are stitched). If you set usim_opt keepparaname=0, the names of RC elements are not saved, in order to reduce memory usage.

Note: You cannot probe current through an element if this setting is used.

Since keepparaname is applied during netlist file parsing, it needs to be specified before reading a netlist file. You can also switch the settings of keepparaname for different segments of the netlist file.

Example

Spectre Syntax:

usim_opt keepparaname=0

usim_opt keepparaname=1

SPICE Syntax:

.usim_opt keepparaname=0

.usim_opt keepparaname=1

tells the Virtuoso UltraSim simulator not to save elements after the usim_opt keepparaname=0 statement and before the usim_opt keepparaname=1 statement (names are saved for the elements that follow usim_opt keepparaname=1).

cgndparse

Spectre Syntax

usim_opt cgndparse=value

SPICE Syntax

.usim_opt cgndparse=value

Description

Coupling capacitors less than cgndparse are grounded (default is 1e -18). cgndparse needs to be specified before reading a netlist file and can only be used in conjunction with usim_opt keepparaname=0 (see keepparaname for more information).

How can I reduce the time it takes to run a DC simulation?

DC simulation can be time consuming for post-layout. To reduce the simulation time, you can save the pre-layout DC using usim_save and simulate the post-layout by starting DC simulation with usim_restart (Spectre syntax). This method has shown to reduce the post-layout DC simulation time significantly. The Virtuoso UltraSim simulator saves the information for all the external nodes in a file. For all internal nodes and states, if the nodes and states are registered in the solver, the information is also saved (otherwise, the simulator does not save the information in the file, and when the simulation is restarted, the unsaved internal nodes and states need to be solved again).

 


Return to top of page

View Library Table of Contents Previous Next Open PDF to print book Email Comments Help Using Documentation Shut Down Cadence Documentation Server

For support, see Cadence Online Support service.

Copyright © 2019, Cadence Design Systems, Inc.
All rights reserved.