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


3 

Simulation Options

This chapter describes the simulation options that can be used to set the Virtuoso® UltraSim simulator for speed, accuracy, and functionality.

See the following topics for more information.

ParagraphBullet
Setting Virtuoso UltraSim Simulator Options in Netlist File
ParagraphBullet
Simulation Modes and Accuracy Settings
ParagraphBullet
High-Sensitivity Analog Option
ParagraphBullet
Analog Autodetection
ParagraphBullet
DC Operating Simulation Control Options
ParagraphBullet
Modeling Options
ParagraphBullet
Waveform File Format and Resolution Options
ParagraphBullet
Miscellaneous Options
ParagraphBullet
Simulator Options: Default Values

Setting Virtuoso UltraSim Simulator Options in Netlist File

The Virtuoso UltraSim simulator supports Spectre® and HSPICE (registered trademark of Synopsys, Inc.) netlist file formats. The Virtuoso UltraSim simulator options can be set in a Spectre netlist file using the usim_opt command, whereas the simulator options in a HSPICE netlist file require the .usim_opt command.

Spectre Syntax

usim_opt [opt1] [opt2] ... [scope1] [scope2] ...

SPICE Syntax

.usim_opt [opt1] [opt2] ... [scope1] [scope2] ...

You can set any number of Virtuoso UltraSim simulator options on the same usim_opt command line and also list the options in any order. These options can be set locally by using the scope option or globally (no scope).

The following scopes are supported by the Virtuoso UltraSim simulator:

ParagraphBullet
Subcircuit instances: inst=[inst1 inst2 ...]
ParagraphBullet
Subcircuit primitives: subckt=[subck1 subckt2 ...]
ParagraphBullet
Subcircuit instance inside a subcircuit: subcktinst=[subckt1.xinst1
subckt2.xinst2 ...]
ParagraphBullet
Device model primitives: model=[model1 model2 ...]
ParagraphBullet
Model primitives inside a subcircuit: subcktmodel=[subckt1.model1
subckt2.model2 ...]
ParagraphBullet
Power network: scope=power
ParagraphBullet
Stitched network: scope=stitch

Wildcards (*,?) can be used to match multiple scopes simultaneously (for more information about wildcards, see "Wildcard Rules" ).

Note: If the scope includes multiple entries, or contains wildcards, it must be enclosed by [] brackets.

Example

Spectre Syntax:

usim_opt sim_mode=ms speed=6 postl=2

usim_opt sim_mode=a inst=i1.i2.vco1

usim_opt sim_mode=df subckt=[digital1 digital2]

HSPICE Syntax:

.usim_opt sim_mode=ms speed=6 postl=2

.usim_opt sim_mode=a inst=x1.x2.vco1

.usim_opt sim_mode=df subckt=[digital1 digital2]

The options of parent subcircuits are automatically inherited by child subcircuits called by the parent. If a local option is set for a child, it overrides the options inherited from the parent. When combining local and global options, the following rules apply:

ParagraphBullet
A lower level option overrides a higher level option
ParagraphBullet
Options do not need to be listed in a specific order in the netlist file
ParagraphBullet
An instance-based option overwrites subcircuit settings if applied to the same block
ParagraphBullet
The last option set overwrites a previously set option if applied to the same block

The Virtuoso UltraSim simulator also supports a common options configuration file called ultrasim.cfg, which enables you to set the simulator default options. This configuration file can be used to set netlist file, user, or site-specific Virtuoso UltraSim simulator options. Both the Spectre and HSPICE syntax options are supported in the configuration file. If the option defined in ultrasim.cfg is also defined in the netlist file, the netlist file overwrites the option. See "Virtuoso UltraSim Simulator Configuration File" for more information about configuration files.

Simulation Modes and Accuracy Settings

You trade-off speed and accuracy by choosing between different model and simulation abstraction levels, and by adjusting the tolerances used by the Virtuoso UltraSim simulation algorithm. The simulation mode sim_mode determines the type of partitioning and device models the Virtuoso UltraSim simulator applies to the circuit. The available modes are digital extended (dx), digital fast (df), digital accurate (da), mixed signal (ms), memory (mx), analog (a), and SPICE (s). Within each simulation mode, the speed option specifies the accuracy and determines the relative tolerance used for voltage and current calculations (valid settings are 1 to 8).

Simulation Modes

Figure 3-1 shows how simulation modes influence partitioning and device modeling. All simulation modes use the same SPICE solver. The a and s modes do not use partitioning, and the mx, ms, da, df, and dx modes use more aggressive partitioning. In addition, s mode uses SPICE models, a and ms modes use analog representative models, and df, da, and dx modes use digital representative models.

Figure 3-1  Simulation Modes


ParagraphBullet
Digital Extended (dx) mode targets an accuracy of within 20% compared to s mode and is designed only for the functional verification of digital circuits. This is achieved by using a digital nonlinear current model, a constant capacitance model, and diffusion junctions with the metal oxide semiconductor field-effect transistor (MOSFET), as well as a special dx solver.
Note: This mode is not applicable to memory or mixed signal design blocks, and may cause slow simulation speed, accuracy issues, or memory problems if used to simulate these types of design blocks.
ParagraphBullet
Digital Fast (df) mode targets an accuracy of within 10% compared to s mode and is designed for the functional verification of digital circuits and memories. This is achieved by using a digital nonlinear current model for the MOSFET, and a constant capacitance model for the MOSFET, and the MOSFET diffusion junctions. A partitioning algorithm is used to provide high-speed simulation.
ParagraphBullet
Digital Accurate (da) mode is used for timing verification of digital circuits and memories, and for some PLL and mixed signal designs. da mode employs a digital nonlinear current and charge model for the MOSFET and its diffusion junctions. da mode uses partitioning and targets a simulation error of less that 5%.
ParagraphBullet
Mixed Signal (ms) mode provides the accuracy needed for analog, mixed signal, and PLL applications. It uses partitioning and an analog representative model for the MOSFET current and charge and diffusion junction. ms mode targets an accuracy within 3%.
ParagraphBullet
Memory (mx) mode provides a special simulation solution for advanced node memory designs with sensitive coupling, and internal voltage regulators. This mode supports multithreading.
ParagraphBullet
Analog (a) mode is designed for high-accuracy applications like ADC, DAC, and DC/DC circuits. It uses the same analog representative models as ms mode. It simulates the design in one partition, but provides a speed improvement of three to ten times over conventional SPICE simulation due to the analog representative model. This mode supports multithreading.
ParagraphBullet
SPICE (s) mode uses Berkeley SPICE models and is targeted to match other SPICE simulators (target error of 1%). This mode supports multithreading.

Table 3-1 gives an overview of the Virtuoso UltraSim simulation modes, shows how they are related to device modeling, and tolerances within the simulation tool, and provides a basic understanding of what mode needs to be used for which application.

 

Table 3-1  Virtuoso UltraSim Simulation Modes Overview

Simulation Mode

dx

df

da

ms

mx

a

s

Option

MOSFET

Digital Model

Analog Model

SPICE

 

Current/Charge Model

df

da

a

a

 

s

mos_method

Differential Junction

df

da

a

a

 

-

mosd_method

JUNCAP

a

s

diode_method

Diode

s

 

BJT

s

 

JFET/MESFET

s

 

Speed

1-8

speed

Default Speed (Tolerance)

8 (0.07)

5 (0.01)

speed (tol)

Integration Method

be

gear2

method

Partitioning

Digital

None

 

Target Error

< 20%

< 10%

< 5%

< 3%

< 3%

< 1%

< 1%

 

Application

Functional verification of digital circuits only

Functional verification of digital circuits/memories

Timing verification of digital circuits and memories, some mixed signal (MS) designs

MS and special memory designs

Advanced node memories

Analog and high sensitivity designs

 

 

Supported Representative Models Summary

The following is a summary of MOSFET and diode models supported by the analog and digital representative models.

MOSFET

ParagraphBullet
BSIM3, BSIM4, MOS9, and MOS11 are supported by the analog and digital representative models
 
ParagraphBullet
HSPICE and Spectre syntax is supported
ParagraphBullet
BSIMSOI (versions 2.23 and higher) and ssimsoi are supported by the analog and digital representative models
 
ParagraphBullet
HSPICE and Spectre syntax is supported
ParagraphBullet
HiSIM2 is supported by the analog and digital representative models
 
ParagraphBullet
HSPICE and Spectre syntax is supported

Diode

ParagraphBullet
juncap is supported by the analog representative model
 
ParagraphBullet
HSPICE and Spectre syntax is supported
 
ParagraphBullet
The analog representative model is the default for all simulation modes, except for s mode which uses the SPICE model

sim_mode

Description

Specifies the simulation mode that defines the partitioning and device model approach the Virtuoso UltraSim simulator applies to the circuit. Refer to Figure 3-1 for more information.

 

Table 3-2  sim_mode Options

Option

Description

sim_mode=dx

Digital extended mode

sim_mode=df

Digital fast mode

sim_mode=da

Digital accurate mode

sim_mode=ms

Mixed signal mode (default)

sim_mode=mx

Memory mode

sim_mode=a

Analog mode

sim_mode=s

SPICE mode

 
ParagraphBullet
The digital extended (dx) mode only applies to digital designs, not memory circuits.

The mx, ms, da, df, and dx modes use circuit partitioning, based on ideal power supplies (dc or pwl voltage source), and apply it only to the MOSFET portion of the design. Simulation performance may be degraded as a result of using:

ParagraphBullet
Generator circuits instead of ideal power supplies
Solution: Use voltage regulator (VR) simulation (see Chapter 5, "Voltage Regulator Simulation" for more information).
ParagraphBullet
Other sources such as controlled, sinus, or current sources
Solution: Use voltage regulator (VR) simulation (see Chapter 5, "Voltage Regulator Simulation" for more information).
ParagraphBullet
Post-layout resistors in the power supply
Solution: Use rvshort or the power network solver (see Chapter 6, "Power Network Solver" for more information).
ParagraphBullet
Inductors in the power supply
Solution: Use a mode to consider inductor behavior for the circuit or use lvshort to improve performance in mx, ms, da, and df modes.

The bipolar junction transistor (BJT) or behavioral Verilog-A dominated designs cannot take advantage of circuit partitioning and other Fast SPICE technology. For these designs, Cadence recommends using s mode. For BiCMOS and latchup BJT designs, ms mode can provide a significant improvement in simulation performance.

Example

Spectre Syntax:

usim_opt sim_mode=da inst=xi1.xi5.xi3

SPICE Syntax:

.usim_opt sim_mode=da inst=xi1.xi5.xi3

tells the simulator that subcircuit xi1.xi5.xi3 and its children are simulated in da mode, but everything else is in df mode.

Accuracy Settings

The Virtuoso UltraSim simulator uses relative and absolute error tolerances while performing transient simulation. To simplify usage, it provides the high-level accuracy option speed, which allows you to customize the simulation speed and accuracy within each simulation mode. This option determines the relative convergence criterion (tol) for the current and voltage calculation.

Figure 3-2 shows how simulation speed can be set for each simulation mode to trade-off speed and accuracy.

Figure 3-2  Accuracy Settings


speed

Description

Defines the simulation speed and accuracy within the chosen simulation mode, and determines the relative tolerance for voltage and current calculations. The default value is speed=5 for all simulation modes except dx mode (default is speed=8).

 

Table 3-3  speed Options 

speed

tol

Mixed Signal (PLL/VCO)

Analog (ADC, SD)

Memory

Digital

1

0.0001

-

-

-

-

2

0.001

Applicable

Applicable

-

-

3

0.0025

Applicable

Applicable

-

-

4

0.005

Applicable

Applicable

Applicable

-

5

0.01

Applicable

Applicable

Applicable

Applicable

6

0.02

-

-

Applicable

Applicable

7

0.04

-

-

-

Applicable

8

0.07

-

-

-

Applicable

Note: Cadence does not recommend using speed=7 /8 together with a or ms mode because the speed settings may not provide sufficient simulation accuracy with these modes.

Example

Spectre Syntax:

usim_opt speed=1

SPICE Syntax:

.usim_opt speed=1

tells the Virtuoso UltraSim simulator to use a relative tolerance of 0.0001 to achieve high-accuracy results.

Recommended Simulation Modes and Accuracy Settings

Table 3-4 provides option setting recommendations for different circuit types. Cadence suggests that you start with the options in column two of the table. Column three suggests how to achieve better accuracy and speed if the recommended options do not fulfill your requirements. See "Setting Virtuoso UltraSim Simulator Options in Netlist File" for more information.

 

Table 3-4  Recommended Virtuoso UltraSim Simulation Options 

Circuit Type

Option

Accuracy and Speed Adjustments

Digital Circuit

sim_mode=df

speed=7

*
Adjust speed to trade off speed and accuracy
*
Use sim_mode=ms, speed=5 to simulate power consumption

Static Random Access Memory (SRAM)

sim_mode=df

speed=7

*
Adjust speed to trade off speed and accuracy
*
Use sim_mode=ms, speed=5 to simulate power consumption

Dynamic Random Access Memory (DRAM)

sim_mode=ms

speed=5

*
Adjust speed to trade off speed and accuracy
*
Use sim_mode=df | da to improve speed

Flash Memory

and EEPROM

sim_mode=ms

speed=6

*
Adjust speed to trade off speed and accuracy
*
Apply sim_mode=df locally to large digital blocks
*
Apply sim_mode=a locally to oscillators and charge pumps to improve speed
*
Apply mos_method=s locally to memory cells

Read-Only Memory (ROM)

sim_mode=df

speed=6

*
Adjust speed to trade off speed and accuracy
*
Apply sim_mode=ms locally to sensing path to improve accuracy

Phase-Locked Loop (PLL) and Delay-Locked Loop (DLL)

sim_mode=ms

analog=2

*
Use method=trap | gear2 for speed improvement
*
Apply analog=2 globally or sim_mode=a locally to VCO to achieve better accuracy and stability
*
Apply sim_mode=df locally to large digital dividers
*
Adjust speed to trade off speed and accuracy

Voltage Controlled Oscillator (VCO) and Oscillator

 

sim_mode=ms

speed=5 | 4

*
Use method=trap | gear2only to maintain oscillation
*
Apply sim_mode=a to achieve better accuracy and stability
*
Adjust speed to trade off speed and accuracy

Note: May need to set maxstep_window or initial conditions to start oscillation.

Switch Capacitor (SC) Filter

sim_mode=ms

analog=2 | 4

*
Adjust speed to trade off speed and accuracy
*
Use sim_mode=a to improve accuracy

Analog Front End (AFE)

sim_mode=ms

analog=2

*
Adjust speed to trade off speed and accuracy
*
Apply sim_mode=a to highly sensitive analog blocks, such as op amp, filter, and analog multiplier to improve accuracy

Sigma Delta Converter

sim_mode=ms

analog=2 | 4

*
Adjust speed to trade off speed and accuracy
*
Use sim_mode=a to improve accuracy

Operational Amplifier

sim_mode=a

 

*
Adjust speed to trade off speed and accuracy
*
Use sim_mode=s to improve accuracy

Bandgap Reference

sim_mode=ms

*
Adjust speed to trade off speed and accuracy
*
Use sim_mode=a | s to improve accuracy

Charge Pump and Switching Power Supply

sim_mode=ms

analog=2 | 4

ParagraphBullet
Adjust speed to trade off speed and accuracy
ParagraphBullet
Use sim_mode=a to improve speed and accuracy

Power Management Circuit

sim_mode=ms

ParagraphBullet
Adjust speed to trade off speed and accuracy
ParagraphBullet
Apply sim_mode=a locally to sensitive analog blocks to improve accuracy

BICMOS Design

sim_mode=ms

ParagraphBullet
Adjust speed to trade off speed and accuracy
ParagraphBullet
Consider using sim_mode=a for smaller designs

SOI SRAM

sim_mode=ms

ParagraphBullet
Adjust speed to trade off speed and accuracy
ParagraphBullet
Set mos_method=s globally to enhance convergence

Circuit with MOSFETs operating in weak inversion

sim_mode=s
or
mos_method=s

ParagraphBullet
Adjust speed to trade off speed and accuracy

 

ADC, DAC

sim_mode=ms

analog=2 | 4

 

*
Adjust speed to trade off speed and accuracy
*
Apply sim_mode=a locally to sensitive analog blocks to improve accuracy
*
Apply sim_mode=df locally to large digital blocks to improve speed

RF Design (LNA, RFVCO, Mixer, and PA)

sim_mode=ms

Local RF block options:
sim_mod =a
speed
=3 | 4

*
Adjust speed to trade off speed and accuracy
*
Set method=trap | gear2only for VCO

High-Sensitivity Analog Option

The Virtuoso UltraSim simulator uses circuit partitioning in higher simulation modes to improve simulation performance. Setting the analog option allows you to select between aggressive, moderate, and more conservative partitioning. The analog option applies only to the ms, da, and df modes, since the a and s modes do not use partitioning.

analog

Description

Controls circuit partitioning, once you have identified the analog contents of your circuit design. The higher the value of analog, the more conservative the partition algorithm.

Note: This does not apply to mx, a or s mode.

 

Table 3-5  analog Options 

Option

Description

analog=0

Digital and memory circuits

analog=1

Digital, memory, and mixed signal circuits (default)

analog=2

Mixed signal, analog, and RF circuits

analog=3

Analog and RF circuits

analog=4

Mixed signal circuits (high sensitivity)

Applying analog=2 or analog=3 can slow down the simulation by forcing more conservative partitioning. To avoid slowing down the simulation, while maintaining accuracy on highly sensitive analog blocks, the analog option can be specified locally. Setting the option locally on sensitive analog blocks allows the simulator to keep the default analog level on the rest of circuit.

Example

Spectre Syntax:

usim_opt analog=2 inst=x1.xpll

SPICE Syntax:

.usim_opt analog=2 inst=x1.xpll

tells the Virtuoso UltraSim simulator to use a high-accuracy approach to analog simulation for feedback coupling in analog circuits.

Analog Autodetection

Virtuoso UltraSim simulator analog autodetection can be used to autodetect analog circuits (simulator automatically uses appropriate simulation settings for these circuits).

Note: Analog autodetection is limited to analog-to-digital conversion (ADC) and PLL circuit designs.

Description

Controls autodetection and promotion of analog circuits.

 

Table 3-6  search Options 

Option

Description

search=default

Disables analog autodetection (default)

search=analog

Enables analog autodetection for ADC and PLL designs

Example

Spectre Syntax:

usim_opt search=analog

SPICE Syntax:

.usim_opt search=analog

tells the Virtuoso UltraSim simulator to enable autodetection of analog circuits.

DC Operating Simulation Control Options

Operating Point Calculation Method

By default, the Virtuoso UltraSim simulator uses a pseudo-transient method of calculating the operating point. This method has been proven to handle the majority of circuits. It consists of two steps: First the power supplies are ramped and then the voltage levels are stabilized with a transient simulation. The simulator also allows you to skip the operating point calculation and to load an operating point from another simulation. In case the pseudo-transient method leads to problems, there is a pseudo-transient method available which only ramps up power supplies. The dc and dc_turbo options are used to specify the operating point calculation method.

dc

Description

Defines the DC simulation algorithm the Virtuoso UltraSim simulator applies to the circuit.

 

Table 3-7  dc Options

Option

Description

dc=0

No operating point calculation. Similar to use initial conditions (UIC) in HSPICE (registered trademark of Synopsys, Inc.). Strictly enforced initial condition. For nodes without initial condition specified, the initial voltages are set to 0.

dc=1

Complete dynamic operating point calculation using pseudo-transient algorithm. Strictly enforces the initial conditions (default in mx, ms, da, and df modes).

dc=2

Fast pseudo-transient circuit state ramp-up.

dc=3

Complete static operating point calculation using source-stepping algorithm (default in a and s modes and automatic switching to dc=1 in case of non convergence). Initial conditions are forced on to nodes by using a voltage source in series with a resistor whose resistance is 1 ohm; default Spectre® rforce value.

Note: dc=3 is not recommended for ms, df, and da mode simulations.

dc=4

Complete pseudo-transient operating point (OP) calculation with damping. Suitable for designs including oscillators or designs where dc=1 causes the DC calculation to exit prematurely.

In a transient analysis, the first calculation is a DC operating point using the DC equivalent model of a circuit. The DC operating point is then used as an initial estimate to solve the next time point in the transient analysis.

If dc=0, the Virtuoso UltraSim simulator sets the nodal voltages as defined by .IC statements (or by the IC= parameters in various element statements) instead of solving the quiescent operating point. The DC operating points of unspecified nodes are set to 0 volts. Since all unspecified nodes will see a voltage jump at the first time step, which might cause convergence problems, it is not recommended to use dc=0.

Note: dc=0 is a Virtuoso UltraSim simulator feature and usim_opt option, and works for all netlist file formats supported by the simulator (see "Netlist File Formats" for supported formats). For simulations based on a SPICE netlist file, setting dc=0 is equivalent to specifying uic in a .tran statement.

Example

Spectre Syntax:

usim_opt dc=0

SPICE Syntax:

.usim_opt dc=0

tells the simulator to skip the operating point calculation and to ramp up the power supplies during transient simulation.

dc_turbo

Description

Defines the algorithm to speed up DC simulation.

 

Table 3-8  dc_turbo Options

Option

Description

dc_turbo=0

Enables conservative DC simulation. Use this setting for circuits requiring accurate DC results, such as analog and mixed-signal circuits (SoC, PLL/DLL, ADC/DAC, DC/DC), and for power management. (Default)

dc_turbo=1

Enables moderate DC simulation. Use this setting for memory circuits such as FLASH whose transient characteristics are sensitive to DC results.

dc_turbo=2

Enables liberal DC simulation. Use this setting for memory circuits such as SRAM whose transient characteristics are not sensitive to DC results.

dc_turbo=3

Enables aggressive DC simulation. Use this setting for memory and digital circuits that require:

In most situations, the default setting (dc_turbo=0) can achieve the required DC simulation results with reasonable performance and accuracy. However, you can select a suitable value (as shown in Table 3-8 ) for dc_turbo based on the circuit type and the sensitivity for DC results. If the DC performance is slow, you can set a higher value for the dc_turbo option to speed up the simulation. Alternatively, if the DC simulation results do not have the desired level of accuracy and affect the transient simulation, you can set a lower value for dc_turbo to achieve higher accuracy while trading off performance.

Note: Avoid setting other DC options manually when using the dc_turbo option. This is because the required DC options are automatically set to an appropriate value by the UltraSim simulator based on the type of DC simulation selected using dc_turbo. In addition, setting other DC options manually can degrade the performance of dc_turbo.

Example

Spectre Syntax:

usim_opt dc_turbo=1

SPICE Syntax:

.usim_opt dc_turbo=1

tells the simulator to use moderate DC simulation algorithm.

homotopy

Description

Enables the DC auto-homotopy feature, which provides good performance and accuracy in DC simulation convergence for VLSI circuits.

 

Table 3-9  homotopy Options

Option

Description

homotopy=newton

Newton iteration will be performed.

homotopy=gmin

gmin stepping will be used in DC simulation.

homotopy=source

Source stepping will be used in DC simulation. The independent sources will be starting from 0 and ending at their actual DC values.

homotopy=dptran

Damped pseudo-transient simulation will be used in DC simulation.

homotopy=ptran

Pseudo-transient simulation will be used in DC simulation.

homotopy=all

Starts the homotopy sequence from newton to ptran until DC simulation convergence is achieved. The sequence is run in the following order: newton-> gmin-> source-> dptran-> ptran.

Regardless of the value you specify, UltraSim will complete the entire cycle by trying each value in this order starting from the specified value until convergence of DC simulation is achieved. For example, if you set homotopy=source, the cycle queue will be as follows: source-> dptran-> ptran->newton-> gmin.

 
ParagraphBullet
The homotopy option is recommended only for A and S simulation modes, and not for MX, MS, DA, DF, and DX modes.

Example

Spectre Syntax

usim_opt homotopy=source

SPICE Syntax

.usim_opt homotopy=source

tells the simulator to use source stepping in DC simulation.

DC Operating Point Calculation Exit and Report Options

By default, the Virtuoso UltraSim simulator uses a pseudo-transient method to calculate the DC operating point. The simulator exits the DC calculation when one of the following conditions occur: A stable operating point is reached, the number of DC events reach a certain limit, or the calculation time reaches the three hour limit. This method works for most circuits. For larger circuits, you can extend the DC calculation time by using the dc_prolong option.

If the DC calculation does not reach any of the aforementioned conditions, the Virtuoso UltraSim simulator issues a warning message and continues the simulation. You can also use the dc_exit option to stop the simulation if a stable solution is not reached (useful when the DC calculation is important for simulation accuracy).

dc_prolong

Description

Controls the exit criteria for operating point calculations.

 

Table 3-10  dc_prolong Options

Option

Description

dc_prolong=0

The Virtuoso UltraSim simulator exits the DC calculation when the three hour time limit is reached or when the number of DC events reaches a certain limit (default)

dc_prolong=1

The simulator extends the DC calculation until a stable operating point is reached

Example

Spectre Syntax:

usim_opt dc_prolong=1

SPICE Syntax:

.usim_opt dc_prolong=1

tells the Virtuoso UltraSim simulator to continue the DC calculation until a stable operating point is reached.

dc_exit

Description

Controls the exit criteria for DC calculations if a stable solution is not reached.

 

Table 3-11  dc_exit Options

Option

Description

dc_exit=0

The Virtuoso UltraSim simulator continues the simulation after issuing a warning message if the DC calculation does not reach a stable solution (default).

dc_exit=1

The simulator stops the simulation after issuing an error message if the DC calculation does not reach a stable solution.

dc_exit=2

The simulator stops the simulation before DC calculation to provide information about the circuit statistics, and a potential problem with too many saved signals.

Note: Setting dc=0 and dc=2 does not provide a stable DC solution and produces an error condition in the Virtuoso UltraSim simulator when dc_exit is set to 1 (instead use dc_exit=0 to run dc=0/2, or set dc=1/3).

Example

Spectre Syntax:

usim_opt dc_exit=1

SPICE Syntax:

.usim_opt dc_exit=1

tells the simulator to exit the simulation when the DC calculation does not reach a stable operating point.

Progress Report

The Virtuoso UltraSim simulator uses different DC methods to calculate the operating point. In general, the DC calculation is fast and does not require a progress report. When a large design is being simulated, and the DC calculation takes longer than five minutes (CPU time), the simulator prints a progress report. The report is printed for every progress_p percentage of the DC calculation time.

For dc=0, 2, and 3, DC calculation progress is reported in a single stage. For dc=1, the DC progress report is comprised of two stages. In cases where a stable solution is not reached in the second stage, the DC calculation continues and a DC steady factor is reported. This factor should get smaller, so it fits within 0 and 1 when the DC calculation approaches convergence.

dc_rpt_num

Description

The Virtuoso UltraSim simulator uses a pseudo-transient method to calculate the DC operating point and generally is able to provide a stable solution. In some cases, the DC calculation does not reach a stable state. For this situation, you can use the dc_rpt_num option to print unstable nodes to a .dcr file.

Note: The unstable nodes are only reported when dc=1 or dc=2 is specified, and the DC solution is not stable when the simulator completes the DC calculation.

 

Table 3-12  dc_rpt_num Options

Option

Description

dc_rpt_num=0

Unsettled nodes are not reported (default)

dc_rpt_num=value

Reports values for the most unstable nodes in order of DC steady state factor (integer, unitless)

Note: The DC steady state factor describes how close the calculated DC value for a node is to a stable DC solution.

Example

Spectre Syntax:

usim_opt dc_rpt_num=20

SPICE Syntax:

.usim_opt dc_rpt_num=20

tells the Virtuoso UltraSim simulator to print 20 unstable nodes in order of DC steady state factor.

Integration Method

The Virtuoso UltraSim simulator offers different choices for the ordinary differential equation (ODE) solver to integrate the circuit equation. The order of the integration method determines the rate of decay of numerical error. The first-order Backward Euler method is a good choice for simulations with sharp waveforms, while the second-order Trapezoidal method and Gear method are good choices for simulations with smooth waveforms. Both methods switch automatically to Backward Euler if convergency problems occur. The Trapezoidal method has no artificial numerical damping and might be a good choice for simulating oscillators if oscillators cannot start oscillation with other methods. This is even more true for the strictly Trapezoidal method, which does not switch to Euler. In general, second-order methods are faster than first-order method when a relatively tight tolerance is desired and the waveforms have big regions that are smooth.

method

Description

Defines the integration method the Virtuoso UltraSim simulator applies to the circuit.

 

Table 3-13  method Options 

Option

Description

method=euler

First-order backward Euler method (default if sim_mode=mx/ms/da/df/dx)

method=trap

Trapezoidal method (automatic switching)

method=gear2

Second-order gear method (automatic switching-default if sim_mode=s or a)

method=traponly

Strictly trapezoidal method (no automatic switching)

method=gear2only

Strictly second-order gear method (no automatic switching)

Example

Spectre Syntax:

usim_opt method=gear2

SPICE Syntax:

.usim_opt method=gear2

tells the simulator to use the second-order gear integration method to integrate the circuit equations.

Notes

ParagraphBullet
When convergency problems occur, the Virtuoso UltraSim simulator automatically switches back to the Euler method.
ParagraphBullet
Only dx mode supports method=euler.

Simulation Tolerances

Although the speed option is all that is commonly needed to control the general accuracy of the Virtuoso UltraSim simulator, individual simulation options can be set for more fine grained control over the speed versus accuracy trade-off. You can set parameters for the universal relative tolerance tol, the absolute voltage tolerance abstolv, the absolute current tolerance abstoli, the local truncation error (LTE) trtol, and the maximum step size maxstep_window. Table 3-9 shows how these parameters depend on the speed settings.

Table 3-14  Simulation Tolerance Parameters 

speed

1

2

3

4

5

6

7

8

abstoli

1pA

1pA

1pA

1pA

1pA

1pA

1pA

1pA

abstolv

1μV

1μV

1μV

1μV

1μV

1μV

1μV

1μV

tol

0.0001

0.001

0.0025

0.005

0.01

0.02

0.04

0.07

trtol

7

7

5.6

4.6

3.5

3.5

3.5

3.5

abstoli

Description

abstoli is the absolute tolerance for currents and defines the smallest current of interest in the circuit. Currents smaller than abstoli are ignored in convergence checking and time step control.

 

Table 3-15  abstoli Option

Option

Description

abstoli=value

Absolute tolerance (double, unit A, 0 < value < 1, default 1 pA)

Example

Spectre Syntax:

usim_opt abstoli=1e-11

SPICE Syntax:

.usim_opt abstoli=1e-11

tells the simulator to use an absolute current tolerance of 10 pA for current calculations.

abstolv

Description

abstolv is the absolute tolerance for voltages and defines the smallest voltage of interest in the circuit. Voltages smaller than abstolv are ignored in convergence checking and time step control. Generally, the absolute voltage tolerance is set 106 to 108 times smaller than the largest voltage signal.

 

Table 3-16  abstolv Option

Option

Description

abstolv=value

Absolute tolerance (double, unit V, 0 < value < 1, default 1 uV)

Example

Spectre Syntax:

usim_opt abstolv=1e-7

SPICE Syntax:

.usim_opt abstolv=1e-7

tells the simulator to use a absolute voltage tolerance of 0.1 uV for voltage calculations.

maxstep_window

Spectre Syntax

usim_opt maxstep_window=[ time1 maxstep1 time2 maxstep2 time3 maxstep3... ]

SPICE Syntax

.usim_opt maxstep_window=[ time1 maxstep1 time2 maxstep2 time3 maxstep3... ]

Description

maxstep_window is used to specify the maximum time step over different simulation time windows. The simulation time window is specified in the square brackets [ ] as pairs of numbers. For each pair, the first number is the start time for the simulation time window and the second number is the maximum time step for this window ending with the next time point. That is, the maxstep_window value for the simulation time window from time1 to time2 is maxstep1, time2 to time3 is maxstep2, and so forth.

Note: The time points can only use sequential double values (for example, time1 < time2 < time3).

 

Table 3-17  maxstep_window Options

Option

Description

maxstep1 <maxstep2...>

Maximum time step (in seconds; no default)

time1 <time2...>

Simulation window time point (in seconds; no default)

Examples

In the following Spectre syntax example

usim_opt maxstep_window=[ 0 1n 1u 1p 10u 1e20 ]

tells the Virtuoso UltraSim simulator the maximum time step is 1n seconds during simulation time window 0 to 1u, 1p seconds during simulation time window 1 to 10u, and after simulation time 10u, the maximum time step is set to 1e20 seconds (large number indicating no maximum time step control).

In the following SPICE syntax example

.usim_opt maxstep_window=[ 100u 1p 200u 1e20 ] x1.x2

sets the maximum time step to 1p during simulation time window 100 u~200 u and 1e20 after 200 u. This setting applies only to instance x1.x2.

tol

Description

The relative tolerance tol is used as the universal accuracy control in the Virtuoso UltraSim simulator. Except for extremely small signals, the relative tolerance is the dominating criterion in the transient simulation. A value between 0 and 1 can be chosen; values closer to zero imply greater accuracy. tol determines the upper limit on errors relative to the size of the signal. In case you need to use a relative tolerance, which cannot be set by the high-level speed option, the tol option can be used to adjust the relative tolerance.

 

Table 3-18  tol Option

Option

Description

tol=value

Double, 0 < value < 1 (default 0.01)

Example

Spectre Syntax:

usim_opt tol=0.005

SPICE Syntax:

.usim_opt tol=0.005

tells the simulator to use a relative tolerance of 0.005 for current and voltage calculation.

trtol

Description

trtol is used in the LTE criterion, where it multiplies reltol. It it set to 3.5 by default, and should not be changed for most circuits.

 

Table 3-19  trtol Option

Option

Description

trtol=value

Error criterion (double, 1 < value < 14, default 3.5)

Example

Spectre Syntax:

usim_opt trtol=8

SPICE Syntax:

.usim_opt trtol=8

tells the simulator to use trtol=8.

relref

Description

relref is used as a reference for the relative convergence criteria. It defines how the relative errors should be treated based on the specified value.

 

Table 3-20  relref Option

Option

Description

relref=pointlocal

Compares the relative errors in quantities at each node relative to the current value of that node.

relref=alllocal

Compares the relative errors in quantities at each node with the largest value of that node for all previous time points. This is the default behavior in S and A mode.

relref=sigglobal

Compares relative errors in each of the circuit signals with the maximum of all the signals in the circuit.

relref=allglobal

Provides the same functionality as sigglobal. In addition, compares equation residues for each node with the maximum current floating on to the node at any time in that node's history. This is the default behavior in MS, MX, DA, DF, and DX modes.

Example

Spectre Syntax:

usim_opt relref=pointlocal

SPICE Syntax:

.usim_opt relref=pointlocal

tells the UltraSim simulator to compare the relative errors in quantities at each node relative to the current value of that node.

Simulation Convergence Options

For circuits that have difficulty converging during simulation, as a result of the design or model being used, you can use the gmin_allnodes or cmin_allnodes options to assist in convergence. The effectiveness of a particular option is dependent on the type of circuit used in the simulation. Cadence recommends trying one or both options to solve the convergence problem.

gmin_allnodes

Description

Adds the specified conductance to each node.

 

Table 3-21  gmin_allnodes Option

Option

Description

gmin_allnodes=value

Adds the specified conductance to each node (default is zero)

Example

Spectre Syntax:

usim_opt gmin_allnodes=1e-10

SPICE Syntax:

.usim_opt gmin_allnodes=1e-10

tells the Virtuoso UltraSim simulator to add a conductance of 1e-10 mho to each node.

cmin_allnodes

Description

Adds the specified capacitance to each node.

 

Table 3-22  cmin_allnodes Option

Option

Description

cmin_allnodes=value

Adds the specified capacitance to each node (default is zero)

Example

Spectre Syntax:

usim_opt cmin_allnodes=1e-15

SPICE Syntax:

.usim_opt cmin_allnodes=1e-15

tells the simulator to add a capacitance of 1 fF to each node.

Save and Restart

Spectre Syntax

usim_save <file="dir/filename"> <time=[time1,time2]> > <repeat=save_period>

SPICE Syntax

.usim_save <file="dir/filename"> <time=[time1,time2]> > <repeat=save_period>

Description

The Virtuoso UltraSim simulator save (usim_save) and restart (usim_restart) features allow you to save the simulation database at a specified time point. The simulation database can be used to restart the simulation at that time point. Applications of save and restart include:

ParagraphBullet
Achieve maximum simulation speed by only simulating the portion of time that requires a highly accurate simulation mode (for example, simulate a PLL locking process in accurate mode and then switch to a higher speed mode once the PLL is locked)
ParagraphBullet
Perform "what if" analyses of problematic sections of a design
ParagraphBullet
Test circuits that are only semi-functional by using an abstract model for capabilities not implemented
ParagraphBullet
Support rapid simulation of circuits by using behavioral models during non-critical accuracy phases of simulation
ParagraphBullet
Use full-chip simulations as test bench generators for block simulations
ParagraphBullet
Experiment with different simulation options on sections of the circuit or on the entire circuit (for example, sim_mode, speed, or output flushing)
ParagraphBullet
Replace portions of the circuit, set the simulator to use the existing port voltages as integrated circuits (ICs) for the replaced circuit, initialize the new circuit, and run the simulation

Use Model

ParagraphBullet
You can invoke the save and restart options using netlist file commands or during an interactive run.
ParagraphBullet
In subsequent simulations, changes to the circuit topology can add or delete nodes. The added nodes are initialized as if the operating points were not saved, and references to deleted nodes are ignored. The coincidental nodes are initialized to values saved from the previous simulation run.
ParagraphBullet
If a parameter or temperature sweep is performed, only the first operating point is saved.
For example, if the input netlist file contains the statement
.temp -10 0 25
the operating point that corresponds to .temp -10 is saved.

 

Table 3-23  .usim_save Commands

Command

Description

dir/filename

Name of the file used to save the simulation state. Multiple time points are assigned unique names. For example, filename@time1, filename@time2, and filename@time3. The saved files contain the Virtuoso UltraSim version number. (Default is <design>.save@time).

time1, time2

Time at which the operating point is saved. A valid transient analysis statement is required to successfully save an operating point. (Default: 0).

repeat

Saves the operating point at specific intervals. For example, t=save_time1+N*save_period, N=0,1,2,... If repeat is used, subsequent save_time inputs are discarded. The saved files are named save_file@t. (Default: Save only once).

Spectre Syntax

usim_restart file="dir/load_file"

SPICE Syntax

.usim_restart file="dir/load_file"

 

Table 3-24  .usim_restart Commands

Command

Description

dir/load_file

Name of the file that contains the saved simulation state. (Default: <design>.simsave).

Strobing Control Options

Description

The strobing function is used to select the time interval between the data points that the Virtuoso UltraSim simulator saves. It is enabled by setting the strobe_period option. The simulator forces a time step for each point it saves, so data is computed instead of interpolated, improving the accuracy of post simulation FFT analysis.

The strobe options are documented in the following table.

 

Table 3-25  strobe Options

Option

Description

strobe_period

Sets the time interval between data points saved by the simulator

strobe_start

Sets the strobing start time (optional)

strobe_stop

Sets the strobing stop time (optional)

strobe_delay

Defines the delay between the first strobe point after strobe_start (optional, default is 0).

Example

Spectre Syntax:

usim_opt strobe_period=10n strobe_start=1u strobe_delay=5n

SPICE Syntax:

.usim_opt strobe_period=10n strobe_start=1u strobe_delay=5n

tells the simulator to start strobing at time=1 us, to save data points at 10 ns intervals, and to continue strobing until the end of the transient simulation. The first actual strobing occurs at time=1.005 us.

Automatic Strobing for Spectre Fourier Elements

When using a Spectre Fourier element in a circuit design, the Virtuoso UltraSim simulator automatically activates the strobing function to improve Fourier analysis accuracy. The strobe period is set equal to the period of the fundamental frequency divided by 1024 or to the number of points in the Fourier analysis (simulator uses the larger number of the two methods).

Modeling Options

To address all types of simulation, ranging from high-speed digital simulation to high-precision analog simulation, the Virtuoso UltraSim simulator offers a variety of MOSFET models covering different levels of abstraction. Although the sim_mode option is what is commonly needed for controlling device modeling in the simulator, individual model options can be set for more fine grained control over the trade-off between speed and accuracy.

MOSFET Modeling

The Virtuoso UltraSim simulator options mos_method and mosd_method are used to control MOSFET modeling. While the BSIM SPICE model uses one set of equations for the MOSFET device, the representative models for dx, df, da, ms, mx, and a mode use different models for the core device (current and charge model), and the diffusion junctions of the MOSFET. The mos_method option determines the core device model, and the mosd_method option defines the diffusion model. If mos_method is set to SPICE, the option mosd_method is ignored. Table 3-26 gives an overview of the type of model used by each simulation mode or each mos(d)_method option.

 

Table 3-26  Simulation Model Modes 

 

Current Model
(mos_method)

Charge Model
(mos_method)

Diffusion
(mosd_method)

df/dx

Nonlinear digital model

Constant capacitance

Constant capacitance

da

Nonlinear digital model

Nonlinear model

Constant capacitance (same as df)

ms|mx|a

Analog model

Analog model

Analog model

s

BSIM SPICE

BSIM SPICE

-

mos_method

Description

Defines the MOSFET current and charge modeling.

 

Table 3-27  mos_method Options

Option

Description

mos_method=df

Nonlinear digital representative current and constant capacitance charge models used in df and dx modes

mos_method=da

Nonlinear digital representative current and charge model

mos_method=a

Nonlinear analog current and charge model

mos_method=s

BSIM SPICE MOSFET model

Example

Spectre Syntax:

usim_opt mos_method=a

SPICE Syntax:

.usim_opt mos_method=a

tells the simulator to use the nonlinear analog current and charge model for all MOSFET devices.

mosd_method

Description

Defines the MOSFET diffusion junction modeling. If mos_method is set to s, mosd_method is ignored.

 

Table 3-28  mosd_method Options

Option

Description

mosd_method=df

Constant capacitance model for diffusion junction

mosd_method=a

Nonlinear analog model for diffusion junction

Example

Spectre Syntax:

usim_opt mosd_method=a

SPICE Syntax:

.usim_opt mosd_method=a

tells the simulator to use the nonlinear analog model for all MOSFET diffusion junctions.

Note: The mos_method and mosd_method options cannot be changed for design blocks simulated in dx mode.

mos_cap

Description

Defines the MOSFET core device capacitance model in a, mx, or ms mode. A linear model can provide significant performance improvements over a nonlinear model. Cadence recommends using mos_cap only for designs that are not sensitive to nonlinear device capacitances.

 

Table 3-29  mos_cap Options

Option

Description

mos_cap=nl

The Virtuoso UltraSim simulator uses nonlinear MOSFET device capacitances (default)

mos_cap=lin

The simulator uses linear MOSFET device capacitances

mod_a_isub

Description

Defines the modeling of substrate current for BSIM3v3, BSIM4, BSIMSOI, and SSIMSOI devices. If s mode is used, the Virtuoso UltraSim simulator considers substrate current automatically.

Note: This option is only applicable to analog representative models (not applicable to da or df mode).

 

Table 3-30  mod_a_isub Options 

Option

Description

mod_a_isub=0

No substrate current in the analog representative model (substrate current is ignored)

mod_a_isub=1

The simulator determines the need for modeling substrate current in the analog representative model, based on current value (default)

mod_a_isub=2

Substrate current is included in the analog representative model, even if the current is small

Example

Spectre Syntax:

usim_opt mod_a_isub=1

SPICE Syntax:

.usim_opt mod_a_isub=1

tells the simulator to activate isub during the simulation if it determines isub is large enough to be considered.

mod_a_igate

Description

Defines the modeling of gate current for BSIM4, BSIMSOI, and SSIMSOI devices. If s mode is used, the Virtuoso UltraSim simulator considers gate current automatically.

Note: This option is only applicable to the analog representative model (not applicable to da or df mode).

 

Table 3-31  mod_a_igate Options

Option

Description

mod_a_igate=0

Gate leakage current is ignored in the analog representative model (default)

mod_a_igate=1

The simulator determines the need for modeling gate current in the analog representative model, based on current value

mod_a_igate=2

Gate current is modeled, even if the current is small

Example

Spectre Syntax:

usim_opt mod_a_igate=2

SPICE Syntax:

.usim_opt mod_a_igate=2

tells the simulator to activate gate current in the analog representative model for a current of any size.

table_mem_control

Description

Controls the memory usage of table models. Enable this option to avoid excessive use of memory due to table models.

 

Table 3-32  table_mem_control Options 

Option

Description

table_mem_control=0

No control on memory usage of table models (default).

table_mem_control=1

The Virtuoso UltraSim simulator controls the memory usage for table models.

Examples

Spectre Syntax:

usim_opt table_mem_control=1

SPICE Syntax:

.usim_opt table_mem_control=1

tells the Virtuoso UltraSim simulator to control the memory usage of table models.

Analog Representative Model for Generic MOSFET Devices

Spectre Syntax

usim_opt generic_mosfet=device_master_name

SPICE Syntax

.usim_opt generic_mosfet=device_master_name

Note: device_master_name is a string.

Description

The Virtuoso UltraSim simulator supports building an analog representative model for generic MOSFET devices, allowing you to treat a generic MOSFET device as a "black box." It is useful for building an analog representative model for proprietary MOSFET devices. This requires the generic MOSFET to be implemented via the compiled-model interface (CMI).

Limitations

ParagraphBullet
The MOSFET device cannot have more than four external terminals, and the terminals must be placed in the following order: D, G, S, and B.
ParagraphBullet
The MOSFET device can have two internal nodes, arranged in the following order: Internal S and internal D (default). If the order of the internal nodes is reversed, use usim_opt mosfet_sd=0 (default is 1).

Example

Spectre Syntax:

usim_opt generic_mosfet=VMOS

usim_opt sim_mode=ms

SPICE Syntax:

.usim_opt generic_mosfet=VMOS

.usim_opt sim_mode=ms

The Virtuoso UltraSim simulator builds an analog representative model for the MOSFET devices with the master name VMOS.

Diode Modeling

diode_method

Description

Defines diode modeling in the Virtuoso UltraSim simulator, with an emphasis on juncap modeling.

 

Table 3-33  diode_method Option

Option

Description

diode_method=df

Constant capacitance model for juncap only

diode_method=a

Nonlinear analog model for juncap only (default for juncap by a/ms/mx/da/df modes)

diode_method=s

Berkeley SPICE diode model (default for diode in all simulation modes, except for juncap)

Note: For juncap, the default is s for s mode and a for a/ms/mx/da/df modes.

Example

Spectre Syntax:

usim_opt diode_method=a model=d

SPICE Syntax:

.usim_opt diode_method=a model=d

tells the simulator to use the default model if d is a juncap model (if d is a regular diode, the diode_method option is ignored by the simulator).

dcut

Description

The dcut option deletes all or selected diodes in the netlist file. This is helpful in designs with large amounts of diodes, where the diodes do not have an impact on the function of the design (for example, input protection diodes). The dcut option applies to the following diode types: diode, dio500, juncap200, juncap, juncap_eldo, dst, and hisim_diode.

 

Table 3-34  dcut Option

Option

Description

dcut=0

No diodes deleted (default)

dcut=1

Diodes deleted

Example

Spectre Syntax:

usim_opt dcut=1 inst=x1.x2

SPICE Syntax:

.usim_opt dcut=1 inst=x1.x2

tells the simulator to delete all the diodes in x1.x2 and all its subcircuits.

minr

optionname options minr=value

Description

This option allows you to short small resistors in models (for example, diode, bjt, and BSIM3 models).

Note: minr is only valid in Spectre format.

Example

simulator lang=spectre

option1 options minr=1.0e-4

tells the Virtuoso UltraSim simulator to short all resistors <1.0e-4 in all models.

Operating Voltage Range

The Virtuoso UltraSim simulator uses representative digital models in df and da mode. These models are generated in the beginning of the simulation, stored in the *.lsn file, and can be reused using the model_lib option. The .lsn file gets updated when changes in the devices, voltage supplies, or process variations occur. The voltage range used for building the models is automatically chosen by detecting the value of the highest power supply and is used for all device models. The generated models are valid over at least 2 times the given voltage range.

In designs with low and high voltage devices, where the voltages differ by an order of magnitude (that is, 2 V/10 V), using higher voltage to build the low voltage device models can lead to a significant modelling error. In this case, it is recommended to use the lower voltage for the low voltage devices and the higher voltage for the high voltage devices. To specify the voltage range, the Virtuoso UltraSim simulator provides the vdd option, which can be applied to devices, subcircuits, and instances.

vdd

Description

Defines the maximum voltage for the generation of digital representative models (da and df mode only).

 

Table 3-35  vdd Option

Option

Description

vdd=value

Maximum voltage (double, unit V, default max. vdd)

Example

Spectre Syntax:

usim_opt vdd=2.1 model=[nf pf]

SPICE Syntax:

.usim_opt vdd=2.1 model=[nf pf]

tells the simulator to use 2.1 volts as the maximum voltage for the model generation of device models nf and pf.

Treatment of Analog Capacitors

The Virtuoso UltraSim simulator uses partitioning to speed up the simulation in df, da, mx, and ms modes. Partitions are built by putting all channel-connected devices into the same partition, and by cutting between capacitive coupled nodes. This approach works fine for digital circuits, memories, and most mixed signal applications.

In some analog circuits, the coupling is designed as a functional part of the circuit (that is, charge pumps), or it strongly affects the functionality of the circuit. In this case, the two circuits connected by the analog coupling capacitance need to be simulated in the same partition.

The canalog and canalogr options determine the thresholds for identifying analog coupling capacitances. Any capacitor larger than canalog, and its ratio to the total capacitance at either node is greater than canalogr, is treated as an analog capacitance. This same threshold applies to nonlinear capacitances (for example, MOSFET Cgd). Setting canalog and canalogr lower can lead to more stable and accurate results, but usually increases run time. Setting it too high can cause less accurate results when heavy coupling occurs.

canalog

Description

Defines the absolute threshold value for identifying analog coupling capacitances in df, da, and ms modes (does not apply to a, s, and mx mode).

 

Table 3-36  canalog Option

Option

Description

canalog=value

Maximum capacitance value (double and unit F)

The canalog default value is dependent on the value of the analog option:

*
If analog=0, then canalog=100f
*
If analog=1, then canalog=100f
*
If analog=2, then canalog=30f
*
If analog=3, then canalog=10f

canalogr

Description

Defines the relative threshold value for identifying analog coupling capacitances in df, da, and ms modes (does not apply to a, s, and mx mode).

 

Table 3-37  canalogr Option

Option

Description

canalogr=value

Relative threshold value (double, unit F, and 0 < value < 1)

The canalogr default value is dependent on the value of the analog option:

*
If analog=0, then canalogr=0.49
*
If analog=1, then canalogr=0.45
*
If analog=2, then canalogr=0.35
*
If analog=3, then canalogr=0.25

Example

Spectre Syntax:

usim_opt canalogr=0.1

SPICE Syntax:

.usim_opt canalogr=0.1

tells the simulator to treat every capacitor larger than 0.1 pF, and canalogr=0.1 bigger than 10% of the nodes capacitance on either side, as analog capacitance.

Inductor Shorting

The Virtuoso UltraSim simulator supports the simulation of inductances. Simulations including inductors can be more time consuming. Sometimes it is helpful to short all inductors in a netlist file, to do a first functional verification. The options lshort and lvshort provide the opportunity to short inductors in the signal paths or power supply lines.

lshort

Description

Defines the threshold value for inductor shorting in signal nets. Inductors smaller than value are shorted.

 

Table 3-38  lshort Option

Option

Description

lshort=value

Inductor value (double, unit H, 0 < value, default 0)

Example

Spectre Syntax:

usim_opt lshort=1μ

SPICE Syntax:

.usim_opt lshort=1μ

tells the simulator to short all inductors less than 1μH in signal nets.

lvshort

Description

Defines the threshold value for inductor shorting in power nets. Inductors smaller than value are shorted.

 

Table 3-39  lvshort Option

Option

Description

lvshort=value

inductor value (double, unit H, 0 < value, default 0)

Example

Spectre Syntax:

usim_opt lvshort=1μ

SPICE Syntax:

.usim_opt lvshort=1μ

tells the simulator to short all inductors less than 1μH in power nets.

Waveform File Format and Resolution Options

Waveform Format

wf_format

The Virtuoso UltraSim simulator supports SignalScan Turbo 2 (SST2), fast signal database (FSDB), parameter storage format (PSF), waveform data format (WDF), and TR0 ASCII format. It can generate SST2 format for viewing in SimVision and Virtuoso Visualization and Analysis (ViVA), FSDB for nWave, PSF format for ViVA, and WDF for viewing with the Sandwork WaveView Analyzer.

Note: The recommended SimVision waveform viewer can be downloaded from the latest Cadence IUS release (the SimVision license is included in the Virtuoso UltraSim simulator license file).

 

Table 3-40  wf_format Options

Option

Description

wf_format=sst2

SST2 format (SimVision and ViVA waveform viewers; trn/dsn; default)

wf_format=fsdb

FSDB format (nWave waveform viewer; fsdb)

wf_format=psf

PSF format (ViVA waveform viewer; tran)

wf_format=wdf

WDF format (Sandwork WaveView Analyzer; wdf)

wf_format=psfxl

PSF XL format (ViVA waveform viewer)

wf_format=tr0ascii

TR0 ASCII format

The Virtuoso UltraSim simulator is able to write files of unlimited size in SST2 and FSDB format, whereas PSF and WDF formats are limited to a maximum of 2 GByte files. Use the wf_maxsize option to split waveform files.

Data compression varies between the formats: SST2 - high, FSDB and WDF - medium, and PSF - low. It is recommended that you use SST2 format for larger circuit designs.

PSF XL is a new Cadence waveform format supported in ViVA (available in IC 6.1.3 release) which provides a high compression rate for large circuit designs. RTSF is a new PSF extension and provides improved viewing performance in ViVA (available in IC 6.1.2 and later releases). RTSF only applies to PSF and PSF XL, and it can be enabled by using +rtsf on the command line.

The Virtuoso UltraSim simulator writes waveform files into the current directory. To enable other Cadence tools to read Virtuoso UltraSim PSF format, create a raw directory using the Virtuoso UltraSim simulator -raw command line option

ultrasim pll.scs -raw pll.raw

In the following Spectre syntax example,

usim_opt wf_format=psf

tells the simulator to generate a waveform file in PSF format.

In the following SPICE syntax example,

.usim_opt wf_format=[psf sst2]

tells the simulator to generate two waveform files, one in PSF format and the other in SST2 format.

Updating Waveform Files

The Virtuoso UltraSim simulator allows you to specify after what period of transient simulation time the waveform data is printed into the output waveform file, determined by the option dump_step. Its default value is 10% of trend. You can also enter the interactive mode with Control-C, and use the interactive command flush any time.

dump_step

Description

Defines the time period after which the waveform data is printed into the output waveform file.

 

Table 3-41  dump_step Option

Option

Description

dump_step=value

Time period (double, unit s, 0 < value, default 10% of tend)

Example

Spectre Syntax:

usim_opt dump_step=10n

SPICE Syntax:

.usim_opt dump_step=10n

tells the simulator to print waveforms every 10 ns of transient time into the output waveform file.

Waveform File Size

wf_maxsize

Description

There are specific waveform formats (for example, psfbin or psfascii) with 2 Gigabyte file size limitations. The wf_maxsize option is used to limit the maximum size of a waveform output file. If this option is not set, and the output file exceeds its size limit, the simulation stops.

 

Table 3-42  wf_maxsize Option

Option

Description

wf_maxsize=[number]

Defines the maximum size of the output file. If the maximum size is exceeded, the Virtuoso UltraSim simulator splits the file into multiple, smaller files.

Note: For FSDB waveform format, on 32-bit platform, the file size is limited to 1.9 Gigabytes. However, there is no such limit for the 64-bit platform.

Example

Spectre Syntax:

usim_opt wf_maxsize=1e9

SPICE Syntax:

.usim_opt wf_maxsize=1e9

tells the simulator to limit the output file size to 1 Gigabyte (if the file size is exceeded, it is split into two files identified by generic names).

Note: If a circuit.sp file and PSF waveform format is used, the following output file list is generated: circuit.tran, circuit_1.tran, circuit_2.tran, circuit_3.tran ... circuit_n.tran.

Waveform File Resolution

The accuracy for voltage and current waveforms, and the time resolution in the output waveform file can be set individually, depending on the application. The Virtuoso UltraSim simulator provides the absolute criteria wf_abstoli, wf_abstolv, and wf_tres, and the relative tolerance wf_reltol.

When plotting a waveform, the next point is determined by the relative change compared to the individual signal, or by the absolute change in the waveform. Except for extremely small signals, the relative criterion is dominant. The time resolution also determines the time unit of the waveform file.

The implemented solution is usually sufficient for any application. You need to verify that the resolution is appropriate for your design. This is especially important because all measurement functions are based on the resulting waveforms.

wf_filter

Description

Enables customized filtering of waveform data. In default ms mode, the Virtuoso UltraSim simulator uses moderate filtering (wf_filter=2) to minimize waveform file size without losing accuracy for standard applications. For sensitive analog designs and small signal amplitudes, no filtering (wf_filter=0) or conservative filtering (wf_filter=1) may be required. Greater waveform file size reduction for large digital and memory designs can be achieved using wf_filter=3 and wf_filter=4.

 

Table 3-43  wf_filter Options 

Option

Description

wf_filter=0

Waveform data filter disabled (default in s mode)

wf_filter=1

Conservative waveform data filter for analog circuits with small signal amplitudes (default in a mode)

wf_filter=2

Moderate waveform data filter (default in ms, mx, da, and df modes)

wf_filter=3

Aggressive waveform filtering for timing verification of large memory designs, digital circuits, and some mixed signal designs

wf_filter=4

Aggressive waveform filtering for functional verification of large memory designs and digital circuits

Example

Spectre Syntax:

usim_opt wf_filter=0

SPICE Syntax:

.usim_opt wf_filter=0

tells the simulator not to filter the waveform data.

wf_reltol

Description

Defines the relative current and voltage criterion for the waveform plot in the output waveform file.

 

Table 3-44  wf_reltol Option

Option

Description

wf_reltol=value

Relative criterion (double, unitless, 0 < value < 1)

Example

Spectre Syntax:

usim_opt wf_reltol=0.001

SPICE Syntax:

.usim_opt wf_reltol=0.001

tells the simulator to print the next point of a waveform in the output waveform file, if the change in the waveform is 0.1% (and the absolute criterion does not apply).

wf_tres

Description

Defines the time resolution and time unit in the output waveform file.

 

Table 3-45  wf_tres Option

Option

Description

wf_tres=value

Time resolution (double, unit s, 0 < value, default 1ps)

Example

Spectre Syntax:

usim_opt wf_tres=10p

SPICE Syntax:

.usim_opt wf_tres=10p

tells the simulator to use a time resolution and unit of 10 ps in the output waveform file.

wf_abstolv

Description

Defines the absolute voltage resolution in the output waveform file.

 

Table 3-46  wf_abstolv Option

Option

Description

wf_abstolv=value

Voltage resolution (double, unit V, 0 < value)

Example

Spectre Syntax:

usim_opt wf_abstolv=0.01m

SPICE Syntax:

.usim_opt wf_abstolv=0.01m

tells the simulator to use a voltage resolution of 0.01 mV in the output waveform file.

wf_abstoli

Description

Defines the absolute current resolution in the output waveform file.

 

Table 3-47  wf_abstoli Option

Options

Description

wf_abstoli=value

Current resolution (double, unit A, 0 < value)

Example

Spectre Syntax:

usim_opt wf_abstoli=1p

SPICE Syntax:

.usim_opt wf_abstoli=1p

tells the simulator to use a current resolution of 1 pA in the output waveform file.

Table 3-48 gives an overview of the default values for wf_reltol, wf_abstolv, and wf_abstoli dependent on the wf_filter option used.

 

Table 3-48  Waveform Filtering Options (Default Values) 

wf_filter

wf_reltol

wf_abstolv

wf_abstoli

0

Not applicable (N/A)

N/A

N/A

1

1e-7

1e-6

1e-12

2

min{tol, 0.005}

1e-6

1e-12

3

min{tol, 0.005}

1e-3

1e-9

4

min{tol, 0.005}

1e-2

1e-6

wf_vtype

Description

Enables you to specify the type of number representation that should be used in the waveform output files. The number representation can be of double or float types. This option applies to SST2, PSF, PSFASCII, FSDB, and WDF waveform formats.

Note: double number representation provides higher precision but results in larger output file size.

 

Table 3-49  wf_vtype Option

Options

Description

wf_vtype=float

Waveform data is written using the float number representation (default).

wf_vtype=double

Waveform data is written using the double number representation.

Example

Spectre Syntax:

usim_opt wf_vtype=double

SPICE Syntax:

.usim_opt wf_vtype=double

tells the UltraSim simulator to switch to double number representation when printing data in the waveform output files.

Node Name Format Control

wf_output_format

Description

Controls the appearance of a hierarchical node name in the waveform database.

 

Table 3-50  wf_output_format Options 

Option

Description

wf_output_format=spice

Includes the following format in the waveform database:

x1.x11.v(n1), x1.x11.i1(m1)

wf_output_format=spectre

Includes the following formats in the waveform database:

x1.x11.n1 and x1.x11.m1:1

wf_output_format=verilog

Includes the following formats in the waveform database:

x1.x11.n1 and x1.x11.m1:1_$flow

wf_output_format=spice_raw

Includes the following formats in the waveform database:

v(x1.x11.n1) and i1(x1.x11.m1)

Miscellaneous Options

ParagraphBullet
Model Library Specification
ParagraphBullet
Warning Settings
ParagraphBullet
Simulation Start Time Option
ParagraphBullet
Simulation Progress Report Control Options
ParagraphBullet
Model Building Progress Report
ParagraphBullet
Local Options Report
ParagraphBullet
Node Topology Report
ParagraphBullet
Resolving Floating Nodes
ParagraphBullet
Flattening Circuit Hierarchy Option
ParagraphBullet
hier
ParagraphBullet
Device Binning
ParagraphBullet
Threshold Voltages for Digital Signal Printing and Measurements
ParagraphBullet
Hierarchical Delimiter in Netlist Files
ParagraphBullet
MOSFET Gate Leakage Modeling with Verilog-A
ParagraphBullet
Automatic Detection of Parasitic Bipolar Transistors
ParagraphBullet
Duplicate Subcircuit Handling
ParagraphBullet
Duplicate Port Handling
ParagraphBullet
Duplicate Instance Handling
ParagraphBullet
Bus Signal Notation
ParagraphBullet
Structural Verilog Dummy Node Connectivity
ParagraphBullet
skip Option
ParagraphBullet
probe_preserve Option
ParagraphBullet
default_chk_substrate Option
ParagraphBullet
Print File Options
ParagraphBullet
Disabling .print Command
ParagraphBullet
Controlling Text Wrapping of Circuit Check Reports
ParagraphBullet
Limiting the Number of Errors Generated by Design Checking Commands
ParagraphBullet
Limiting the Number of Errors Generated by Power Checking Commands
ParagraphBullet
Limiting the Number or Errors Generated by the Timing Analysis Commands
ParagraphBullet
Modifying the Report Format of Violation Conditions for Design Checking Commands
ParagraphBullet
Changing Resistor, Capacitor, or MOSFET Device Values
ParagraphBullet
.reconnect
ParagraphBullet
UMI or CMI Models for Source Elements
ParagraphBullet
Transistor Subcircuit Definition or verilogA Model Selection

Model Library Specification

The option model_lib specifies the name of the model library file that stores all digital representative models (the model library is always given a .lsn extension). The default name for the model library is the netlist filename. For example, suppose the netlist filename is netlist.sp. Then the model library file would be called netlist.lsn. It is recommended to keep the path of the file relative to the working directory.

This option is useful only if a large number of representative models are going to be built. The time for building representative models is not dominant compared to simulation. Occasionally the model build time can dominate the run time. Normally, you do not need to use this option because the Virtuoso UltraSim simulator automatically builds a model library file which is automatically loaded the next time you run the simulator. The first simulator run on a particular netlist file is somewhat slower than subsequent runs in the same directory.

If you want to reuse the representative models for different netlist files, or the same netlist file in different locations, you need to specify the library file to write to and read from. By using the same model library name and storing it in a central location, you can reuse models from many netlist files.

model_lib

Description

Defines the library file used for digital representative models (da and df mode only).

 

Table 3-51  model_lib Option

Option

Description

model_lib=filename

Filename (default netlist.lsn)

Examples

In the following Spectre syntax example

usim_opt model_lib=mod.lsn

tells the simulator to use the model file mod.lsn out of the netlist file directory.

In the following SPICE syntax example

.usim_opt model_lib="/home/user/ms2/mod.lsn"

tells the simulator to use the model file /home/user/ms2/mod.lsn.

Warning Settings

The Virtuoso UltraSim simulator allows you to customize how warning messages are handled by the simulator. The number of messages per warning category can be limited globally for all warnings (usim_opt warning_limit) or individually for each category (usim_report warning_limit). When the specified category limit is reached, the simulator notifies you that the warning messages are no longer being displayed. Dangling and floating node warnings are controlled by the number of reported nodes.

warning_limit

Description

Limits the number of warnings issued per warning category and is applied globally to all warning messages. This option needs to be defined at the beginning of the netlist file.

 

Table 3-52  warning_limit Option

Option

Description

warning_limit=value

Number of warnings (integer, unitless; default is 5)

A limit can also be applied to a specific warning category using the usim_report warning_limit command.

Example

Spectre Syntax:

usim_opt warning_limit=10

SPICE Syntax:

.usim_opt warning_limit=10

tells the simulator to print out 10 warnings per warning category.

warning_limit_dangling

Description

A dangling node, often the result of a design or netlist file problem, is only connected to one device or element (a node in a circuit requires a minimum of two connections). The warning_limit_dangling command is used to define the maximum number of listed dangling nodes (default is 50).

Example

Spectre Syntax:

usim_opt warning_limit_dangling=100

SPICE Syntax:

.usim_opt warning_limit_dangling=100

tells the simulator to print out 100 dangling nodes.

warning_limit_float

Description

A floating node is an input node (that is, a MOSFET gate) which is not driven by an element or device, and has no DC path to ground. The Virtuoso UltraSim simulator automatically connects floating nodes through a 1e12 ohm resistor (gmin_float=1e-12) to ground. The warning_limit_float command defines the maximum number of listed floating nodes (default value is 50). The floating nodes are listed in two categories: 1) Nodes connected to MOSFET or JFET gates and 2) nodes not connected to any device gates.

Example

Spectre Syntax:

usim_opt warning_limit_float=100

SPICE Syntax:

.usim_opt warning_limit_float=100

tells the simulator to print out 100 floating nodes.

warning_limit_near_float

Description

A nearly floating node is a node with a high resistive path to a driver or ground. A common example is the unconnected substrate of a MOSFET. The warning_limit_near_float command defines the maximum number of listed nodes which have a weak DC path to ground (default value is 50). These nodes are listed in two categories: 1) Nodes connected to MOSFET or JFET gates and 2) nodes not connected to any device gates.

Example

Spectre Syntax:

usim_opt warning_limit_near_float=100

SPICE Syntax:

.usim_opt warning_limit_near_float=100

tells the simulator to print out 100 nodes with a weak DC path to ground.

warning_limit_ups

Description

Defines the maximum number of listed large resistors in a power net that are detected by the Virtuoso UltraSim power network solver (UPS). The default value is 50.

Example

Spectre Syntax:

usim_opt warning_limit_ups=100

SPICE Syntax:

.usim_opt warning_limit_ups=100

tells the simulator to print out 100 large resistors in power net.

warning_node_omit

Spectre Syntax

usim_opt warning_node_omit=[node1 node2 …]

SPICE Syntax

.usim_opt warning_node_omit=[node1 node2 …]

Description

Allows you to filter out specific nodes related to dangling, floating, and nearly-floating nodes from warning messages. Wildcards can be used to define these nodes (see "Wildcard Rules" for more information).

Examples

In the following Spectre syntax example

usim_opt warning_node_omit=[x1.x23.uncon20]

tells the Virtuoso UltraSim simulator to exclude the x1.x2.uncon20 node from the node list of dangling, floating, and near-floating warning messages.

In the following SPICE syntax example

.usim_opt warning_node_omit=[x3.x*]

tells the simulator to exclude all nodes under the x3.x* hierarchy from the node list.

In the next example

.usim_opt warning_node_omit=[x1.x23.uncon20 x3.x*.uncon*]

tells the simulator to exclude the x1.x23.uncon20 node and all nodes matching x3.x*.uncon* from the node list.

Simulation Start Time Option

sim_start

Description

The Virtuoso UltraSim simulator allows you to start the simulation at a user-defined time using the sim_start option.

 

Table 3-53  sim_start Option

Option

Description

sim_start

Simulation starts at the specified time value

Example

Spectre Syntax:

usim_opt sim_start=10n

SPICE Syntax:

.usim_opt sim_start=10n

tells the Virtuoso UltraSim simulator to start the simulation at 10 ns.

Simulation Progress Report Control Options

Description

These options are used to print out simulation progress reports to a standard output display device (stdout) or log file during transient simulation. If the options are not specified, the Virtuoso UltraSim simulator prints out progress reports at 10% intervals during the transient simulation, or every two hours, whichever occurs first.

progress_t

To define the time interval (in minutes) the simulator prints out the transient simulation progress report to a stdout or log file, use

progress_t=time

Note: Any value for time, other than a whole number, is ignored and the default is used.

progress_p

To define the interval (in transient percentage) the simulator prints out the transient simulation progress report to a stdout or log file, use

progress_p=percentage

Note: This option can also be used to specify the DC progress report.

Examples

In the following Spectre syntax example

usim_opt progress_t=5

tells the simulator to print out a progress report every 5 minutes.

In the following SPICE syntax example

.usim_opt progress_p=2

tells the simulator to print out a progress report at the completion of every 2% of transient simulation.

In the next example

.usim_opt progress_t=10 progress_p=5

tells the simulator to print out progress reports at the completion of every 5% of the transient simulation, or every 10 minutes, whichever occurs first.

Model Building Progress Report

Prior to simulation, generating analog or digital table models for model building usually only takes a few seconds to complete. If model building takes longer, the Virtuoso UltraSim simulator prints a progress report in the log file every five minutes (default). The progress report time interval to print can be adjusted using the model_progress_t option.

model_progress_t

Description

The model_progress_t option defines the time period the Virtuoso UltraSim simulator uses to print out a progress report during model building (minimum time value is one minute).

 

Table 3-54  model_progress_t Option

Option

Description

model_progress_t=value

Specifies time period required to print out the model building progress report.

Example

Spectre Syntax:

usim_opt model_progress_t=2

SPICE Syntax:

.usim_opt model_progress_t=2

tells the Virtuoso UltraSim simulator to print out model building progress reports every two minutes.

Local Options Report

Spectre Syntax

usim_opt block_dump=<0|1|2> [block_depth=<depth_value>]

SPICE Syntax

.usim_opt block_dump=<0|1|2> [block_depth=<depth_value>]

Description

This option allows you to print locally and globally defined simulation options, so you can identify which simulation options are being used for specific blocks in the circuit design. The simulation options are printed to a Virtuoso UltraSim report file (.usim_opt_rpt) and also appear as a message in the log file (.ulog).

The .ulog file contains the following lines which indicate the start and stop time points for the local options:

Starting reporting local options in: <filename>

Ending reporting local options

The local simulation options are located under the .usim_opt scope heading and the global simulation options are located under the Top Level Options heading in the report file.

 

Table 3-55  block_dump and block_depth Options

Option

Description

block_dump=<0|1|2>

Defines the report mode.

0 - Report is not generated (default).

1 - Detailed report containing subcircuits and/or instances is generated.

If all of the instances for the subcircuit share a common option set, only the subcircuit name is printed. If instances share the same option set as the hierarchy above, the instances are omitted from the report.

2 - Complete report listing all of the instances is generated.

block_depth=<depth_value>

Defines the hierarchical depth [optional]. The default value is the maximum hierarchical depth of the circuit design. If block_depth=0, only the global option set is printed.

Example

Spectre Syntax:

usim_opt block_dump=1

usim_opt sim_mode=ms speed=6

usim_opt sim_mode=da analog=2 speed=4 inst=[X1]

usim_opt sim_mode=s inst=[MNIV1]

SPICE Syntax:

.usim_opt block_dump=1

.usim_opt sim_mode=ms speed=6

.usim_opt sim_mode=da analog=2 speed=4 inst=[X1]

.usim_opt sim_mode=s inst=[MNIV1]

The Virtuoso UltraSim simulator generates the following <filename>.usim_opt_rpt file:

***************************************************************************

.TITLE 'This file is :./usim.usim_opt_rpt

Options at all the levels are printed

Top Level Options:

The options as follows,
    .usim_opt
   * General Options
    + sim_mode=ms
    + speed=6
    + postl=0
    + pn=1
    + preserve=0
    + analog=1
   * Solver Options
    + tol=20.0000 m
    + method=be
    + trtol=3.5000
    + hier=1
    + maxstep=inf

    ... (continued)

**********************************************************************

.usim_opt scope:
    #mult2x2

The options as follows,
    .usim_opt
   * General Options
    + sim_mode=da
    + speed=4
    + postl=0
    + pn=1
    + preserve=0
    + analog=2
   * Solver Options
    + tol=5.0000 m
    + method=trap
    + trtol=4.5536
    + hier=1
    + maxstep=inf

    ... (continued)

**********************************************************************

.usim_opt scope:
    MNIV1 (n3p3fets)

 

The options as follows,
    .usim_opt
   * General Options
    + sim_mode=s
    + speed=6
    + postl=0
    + pn=1
    + preserve=0
    + analog=1
   * Solver Options
    + tol=20.0000 m
    + method=gear2
    + trtol=3.5000
    + hier=1
    + maxstep=inf

Node Topology Report

Description

The Virtuoso UltraSim simulator node_topo_report option allows you to copy node topology analysis results into the following types of ASCII report files:

ParagraphBullet
Floating node (.floating_rpt file extension)
ParagraphBullet
Nearly floating node (.weak_floating_rpt)
ParagraphBullet
Dangling node (.dangling_rpt)

The default setting is node_topo_report=0, where node topology report files are not generated by the simulator (initial node topology warnings are still copied into the log files).

Example

Spectre Syntax:

usim_opt node_topo_report=1

SPICE Syntax:

.usim_opt node_topo_report=1

tells the Virtuoso UltraSim simulator to generate node topology reports for floating, nearly floating, and dangling nodes. If your netlist file is named netlist.sp, the simulator creates netlist.weak_floating_rpt, netlist.floating_rpt, and netlist.dangling_rpt files.

Resolving Floating Nodes

Description

To avoid simulation problems related to floating nodes, the Virtuoso UltraSim simulator automatically inserts a resistor between the floating node and ground. The value of the resistor is defined by gmin_float.

gmin_float

Defines the resistor value used for grounding floating nodes (default gmin_float value is 1e-12).

Example

Spectre Syntax:

usim_opt gmin_float=1e-10

SPICE Syntax:

.usim_opt gmin_float=1e-10

tells the Virtuoso UltraSim simulator to add a 1e10 ohm resistor between any floating node and ground.

Flattening Circuit Hierarchy Option

Because Virtuoso UltraSim is a Fast SPICE simulator, it is able to handle large designs due to its true hierarchical approach. The basic idea is to consider subcircuits which are the same and see the same stimuli as one subcircuit. This allows a significant performance improvement compared to flat simulation. There is a certain overhead used for traversing the hierarchy. For circuits where each subcircuit shows different behavior, it can be advantageous to trade memory usage for speed, by flattening the circuit hierarchy.

With the exception of the SPICE and Analog modes, the Virtuoso UltraSim simulator uses an autodetect mode to detect the circuit hierarchy by default. If you want to flatten this circuit, you can use the hier command. Even with a flattened netlist file, the Virtuoso UltraSim simulator uses the same simulation engine.

hier

Description

Defines the hierarchy approach the Virtuoso UltraSim simulator applies to the circuit.

 

Table 3-56  hier Options 

Option

Description

hier=0

Flattens the netlist file

hier=1

Autodetect hierarchy (default)

Example

Spectre Syntax:

usim_opt hier=0

SPICE Syntax:

.usim_opt hier=0

tells the simulator to flatten the entire circuit.

Device Binning

Devices, which are operated out of the model range they were designed for, can lead to a significant simulation error, as well as to convergence problems. The Virtuoso UltraSim simulator provides an error message if it find such devices. If this problem occurs, and you want to continue the simulation, the option strict_bin can be set to use the closest model bin for out-of-range devices.

strict_bin

Description

Defines the model binning approach in the Virtuoso UltraSim simulator.

 

Table 3-57  strict_bin Options

Option

Description

strict_bin=1

The Virtuoso UltraSim simulator gives an error message for devices operating out of model range, and stops the simulation (default).

strict_bin=0

The simulator gives a warning message for devices operating out of model range, uses the closest model bin available, and continues the simulation.

Example

Spectre Syntax:

usim_opt strict_bin=0

SPICE Syntax:

.usim_opt strict_bin=0

tells the simulator to give a warning and uses the closest model bin for models out of model range.

Element Compaction

By default, the Virtuoso UltraSim simulator compacts parallel elements and replaces them with a newly named element. This approach yields better performance. However, in some cases, this may result in missing current or element probes in the simulation result files. To overcome this limitation, element compaction can be disabled.

elem_compact

Description

Allows to disable element compaction

 

Table 3-58  elem_compact Options

Option

Description

elem_compact=1

Enables element compaction (default)

elem_compact=0

Disables element compaction

Example

Spectre Syntax:

usim_opt elem_compact=0

SPICE Syntax:

.usim_opt elem_compact=0

tells the simulator to not perform element compaction.

Threshold Voltages for Digital Signal Printing and Measurements

The Virtuoso UltraSim simulator uses logic waveforms for the following statements: .lprint/.lprobe, usim_ta, and usim_nact. You can set the threshold voltages by using arguments with each of the aforementioned statements or by defining the threshold voltages using the vl and vh options. These options can be set globally for the entire circuit or locally for an instance or subcircuit.

Note: Local settings overwrite global settings.

vh

Description

Defines the threshold value for logic 1. Any signal above this value is considered 1.

 

Table 3-59  vh Option

Option

Description

vh=value

High threshold voltage (double, unit V). If not specified, the default value is 70% of vdd. If the vdd option is not specified, vh is defined as 70% of the highest voltage supply in the circuit.

Example

Spectre Syntax:

usim_opt vh=2.3

usim_opt vh=1.2 inst=XDIGITAL

SPICE Syntax:

.usim_opt vh=2.3

.usim_opt vh=1.2 inst=XDIGITAL

tells the Virtuoso UltraSim simulator for block XDIGITAL to consider signals above 1.2 v to be logic 1, and for all signals outside block XDIGITAL, use 2.3 v as the threshold for logic 1.

vl

Description

Defines the threshold value for logic 0. Any signal below the value is considered 0.

 

Table 3-60  vl Option

Option

Description

vl=value

Low threshold voltage (double, unit V). If not specified, the default value is 30% of vdd. If the vdd option is not specified, vl is defined as 30% of the highest voltage supply in the circuit.

Example

Spectre Syntax:

usim_opt vl=0.9

SPICE Syntax:

.usim_opt vl=0.9

tells the simulator to print a logic 0 for all signal values below 0.9 v.

Hierarchical Delimiter in Netlist Files

hier_delimiter

Spectre Syntax

usim_opt hier_delimiter="\\"

SPICE Syntax

.usim_opt hier_delimiter="\\"

Description

The default hierarchical delimiter is a single period (.) but can be changed by setting the hier_delimiter option.

Notes:

ParagraphBullet
This option has to be set as the first line in the top level input netlist file.
ParagraphBullet
To define the delimiter as " or \, the Escape symbol is required (for example, usim_opt hier_delimiter="\"").

 

Table 3-61  hier_delimiter Option

Option

Description

Type

Default

hier_delimiter

Specifies the hierarchical delimiter in the netlist file

char

.

Example

Spectre Syntax:

usim_opt hier_delimiter="%"

SPICE Syntax:

.usim_opt hier_delimiter="%"

hiernode_lookup

Spectre Syntax

usim_opt hiernode_lookup=2

SPICE Syntax

.usim_opt hiernode_lookup=2

Description

The Virtuoso UltraSim simulator, by default, does not allow you to use node and element names containing a period (.) because this symbol is reserved as a hierarchical delimiter.

In special cases, a period may be used as a hierarchical delimiter and as part of a node name. You can use hiernode_lookup=2 to enable the Virtuoso UltraSim simulator to consider the period as part of a node name.

For example, a probe or measure statement can be applied to x0.x1.x2.nd, where x0.x1 is the hierarchical instance name and x2.nd is the node name. If hiernode_lookup=2 is used, the Virtuoso UltraSim simulator automatically identifies the hierarchical instance name and reserves x2.nd as the node name.

Note that this option:

ParagraphBullet
Works only for hierarchical node names, and not for element names.
ParagraphBullet
Works even if the hierarchical delimiter is changed. For example, x1/x2/x3/net5, where the hierarchical delimiter is /.
ParagraphBullet
Requires the hierarchical name to be at the beginning, and the flat node name to be at the end of the string.

 

Table 3-62  hiernode_lookup Options

Option

Description

hiernode_lookup=0

Period (.) cannot be used as part of node names (default)

hiernode_lookup=2

Period can be used as part of node names

MOSFET Gate Leakage Modeling with Verilog-A

Description

Using Verilog-A modules or controlled sources to model gate leakage effects in MOSFET devices may cause conservative partitioning and slow simulation speed. The Virtuoso UltraSim simulator search_mosg option allows you to select more aggressive partitioning and a faster simulation speed.

 

Table 3-63  search_mosg Options 

Option

Description

search_mosg=0

Search is not performed for MOSFET gate leakage Verilog-A models or controlled sources (default)

search_mosg=1

Automatic search is performed for MOSFET gate leakage Verilog-A models and controlled sources

Example

Spectre Syntax:

usim_opt search_mosg=1

SPICE Syntax:

.usim_opt search_mosg=1

enables the simulator to automatically search for MOSFET gate leakage Verilog-A models or controlled sources using more aggressive partitioning, resulting in a faster simulation speed.

Automatic Detection of Parasitic Bipolar Transistors

Description

Circuit designers often want to simulate the effects of parasitic bipolar junction transistor (BJT) devices formed in the triple well CMOS process. Including these transistors in the simulation may result in conservative partitioning and slow simulation speed. The parasitic_bjt option allows you to control the way the Virtuoso UltraSim simulator handles the parasitic BJT devices, resulting in much faster simulation speed.

Note: The simulator can only detect parasitic vertical PNP BJTs with the emitter connected to the body of a NMOSFET.

 

Table 3-64  Parasitic BJT Options 

Option

Description

parasitic_bjt=0

No detection of parasitic BJT devices (default)

parasitic_bjt=1

Detect parasitic vertical PNP BJT devices and invoke aggressive partitioning

parasitic_bjt=2

Detect and remove parasitic vertical PNP BJT devices

Examples

In the following Spectre syntax example

usim_opt parasitic_bjt=1

tells the Virtuoso UltraSim simulator to detect parasitic vertical PNP BJT devices and to invoke aggressive partitioning.

In the following SPICE syntax example

.usim_opt parasitic_bjt=2

tells the simulator to cut away all the parasitic vertical PNP BJT devices.

Duplicate Subcircuit Handling

duplicate_subckt

Spectre Syntax

usim_opt duplicate_subckt=error|warning|ignore

SPICE Syntax

.usim_opt duplicate_subckt=error|warning|ignore

Description

You can define the handling of duplicate subcircuits by using the duplicate_subckt option in the netlist file. The following settings can be specified:

 

Table 3-65  duplicate_subckt Options

Option

Description

duplicate_subckt=error

  

Stops the simulation upon encountering a duplicate subcircuit and issues an error message. (Default)

duplicate_subckt=warning

  

Uses the last definition of the subcircuit, overrides all the previous subcircuit definitions, and issues a warning message.

duplicate_subckt=ignore

  

Uses the last definition of the subcircuit, overrides all the previous subcircuit definitions, and does not issue any message.

Note: The behavior of this option is the same as opt1 options duplicate_subckt=error|warning|ignore Spectre option. If multiple options are defined, the last definition overwrites the previous definitions.

Examples

ParagraphBullet
Setting duplicate_subckt to
.usim_opt duplicate_subckt=error
will stop the simulation and issue an error message if duplicate subcircuits are detected.
ParagraphBullet
Setting duplicate_subckt to
.usim_opt duplicate_subckt=warning
will use the last definition of the subcircuit, override all previous subcircuit definitions, and issue a warning message.
ParagraphBullet
Setting duplicate_subckt to
.usim_opt duplicate_subckt=ignore
will use the last definition of the subcircuit, override all previous subcircuit definitions, and not issue any message.

Duplicate Port Handling

duplicateports

Spectre Syntax

usim_opt duplicateports=error|warning|ignore

SPICE Syntax

.usim_opt duplicateports=error|warning|ignore

Description

You can define the handling of duplicate ports in a subcircuit using the duplicateports option in the netlist file. The following settings can be specified:

 

Table 3-66  duplicateports Options

Option

Description

duplicateports=error

  

Stops the simulation upon encountering a duplicate port in the subcircuit and issues an error message. (Default)

duplicateports=warning

  

Connects the duplicate ports together (shorts them) to be treated as one port, and issues a warning message.

duplicateports=ignore

  

Connects the duplicate ports together (shorts them) to be treated as one port, but does not issue a message.

Note: The behavior of this option is the same as opt1 options duplicateports=error|warning|ignore Spectre option. If multiple options are defined, the last definition overwrites the previous definitions.

Examples

ParagraphBullet
Setting duplicateports to
.usim_opt duplicateports=error
will stop the simulation and display an error message if duplicate ports are detected in a subcircuit.
ParagraphBullet
Setting duplicateports to
.usim_opt duplicateports=warning
will treat the duplicate ports as one port and display a warning message.
ParagraphBullet
Setting duplicateports to
.usim_opt duplicateports=ignore
will treat the duplicate ports as one port but will not display any message.

Duplicate Instance Handling

duplicateinstance

Spectre Syntax

usim_opt duplicateinstance=error|warning|ignore

SPICE Syntax

.usim_opt duplicateinstance=error|warning|ignore

Description

You can define the handling of duplicate instance definitions by using the duplicateinstance option in the netlist file. The following settings can be specified:

 

Table 3-67  duplicateinstance Options

Option

Description

duplicateinstance=error

  

Stops the simulation upon encountering a duplicate instance and issues an error message. (Default)

duplicateinstance=warning

  

Uses the last definition of the instance, overrides all the previous instance definitions, and issues a warning message.

duplicateinstance=ignore

  

Uses the last definition of the instance, overrides all the previous instance definitions, and does not issue any message.

Note: The behavior of this option is the same as opt1 options duplicateinstance=error|warning|ignore Spectre option. If multiple options are defined, the last definition overwrites the previous definitions.

Examples

ParagraphBullet
Setting duplicateinstance to
.usim_opt duplicateinstance=error
will stop the simulation upon encountering a duplicate instance and issue an error message.
ParagraphBullet
Setting duplicateinstance to
.usim_opt duplicateinstance=warning
will use the last definition of the instance, override all the previous instance definitions, and issue a warning message.
ParagraphBullet
Setting duplicateinstance to
.usim_opt duplicateinstance=ignore
will use the last definition of the instance, override all the previous instance definitions, and will not issue any message.

Bus Signal Notation

buschar

Spectre Syntax

usim_opt buschar="<>"

SPICE Syntax

.usim_opt buschar="<>"

Description

The Virtuoso UltraSim simulator resolves bus signals into individual signals when reading Verilog netlist files (.vlog). The buschar option and either <> or [] is used to set the bus notation. The exception is bus notation for vector and vcd stimuli which is set using vector and vcd options (see Chapter 11, "Digital Vector File Format" and Chapter 12, "Verilog Value Change Dump Stimuli" for more information).

 

Table 3-68  buschar Options 

Option

Description

buschar="[]"

Used as bus notation (default)

buschar="<>"

Used as bus notation

Example

Spectre Syntax:

usim_opt buschar="<>"

SPICE Syntax:

.usim_opt buschar="<>"

tells the Virtuoso UltraSim simulator to use <> as the notation for bus signals read from the structural Verilog netlist file.

Bus Node Mapping for Verilog Netlist File

vlog_buschar

Description

The Virtuoso UltraSim simulator can support name mapping for bus nodes when instantiating analog cells in a structural Verilog netlist file. Bus node mapping between the structural Verilog netlist file and analog cell is based on the order of the nodes. To resolve bus signals into individual signals in the analog netlist file, the vlog_buschar option is used to set the bus notation.

Note: The ports of the bus node in the analog cell definition must be continuous because the simulator ends the bus node definition once another node name is encountered.

.usim_opt vlog_buschar="front_bus_symbol*end_bus_symbol"

where asterisk (*) is a keyword and the default bus symbol is [] (square brackets). The front_bus_symbol and end_bus_symbol arguments define the starting and ending letters of bus notation, respectively.

Examples

For the first example

Structural Verilog netlist file:

add4 u1 ( .a ({ net1, net2, a1, a2 }), .sum ({ sum1, sum0 }), .vdd(VDD3),
.vss(VSS_DIG) );

Analog netlist file:

.usim_opt vlog_buschar="_*"

.subckt add4 a_3 a_2 a_1 a_0 vdd vss sum_1 sum_0

tells the Virtuoso UltraSim simulator to map the net1, net2, a1, and a2 nodes in the Verilog netlist file to a_3, a_2, a_1, and a_0 in the analog netlist file, as well as sum1 and sum0 to sum_1 and sum_0.

In the next example

Structural Verilog netlist file:

reg [2:0] n;

ram i0 .a (n);

Analog netlist file:

.usim_opt vlog_buschar="<*>"

subckt ram a<2> a<1> a<0>

tells the simulator to map the n[2], n[1], and n[0] nodes in the Verilog netlist file to a<2>, a<1>, and a<0> in the analog netlist file.

In the next example

Structural Verilog netlist file:

reg [7:0] Addr;

ram i0 ( .A(Addr), vdd(VDD3) );

Analog netlist file:

.usim_opt vlog_buschar="*"

subckt ram A7 A6 A5 vdd A4 A3 A2 A1 A0

tells the simulator that the A4 through A0 analog signals are not recognizable as bus nodes because the vdd node ends the bus node definition.

Structural Verilog Dummy Node Connectivity

vlog_supply_conn

Spectre Syntax

usim_opt vlog_supply_conn=[portname1 node1 portname2 node2 ...]

SPICE Syntax

.usim_opt vlog_supply_conn=[portname1 node1 portname2 node2 ...]

When invoking an analog cell using SPICE syntax from a structural Verilog instance, the redundant ports of the SPICE cell are connected to dummy nodes if the Verilog instance has fewer ports than the SPICE cell. If the power nets (for example, vdd and vss) are only defined in the SPICE subcircuit, and not the Verilog instance, they are also connected to dummy nodes.

Note: For the Virtuoso UltraSim simulator, the local node always overwrites the global node.

For example, in the Spectre netlist file

subckt add a1 a2 sum vdd vss

SPICE netlist file:

.subckt add a1 a2 sum vdd vss

Structural Verilog netlist file:

add u1 a1 a2 sum

The vdd and vss nodes cannot be connected to the power net, even if they are declared global nodes in the netlist file.

The vlog_supply_conn option is used to connect to

ParagraphBullet
The structural Verilog dummy node
ParagraphBullet
Most of the supply node
ParagraphBullet
The global or internal node of the Verilog instance

Description

This option is used to connect a dummy node to either the global or internal node of the Verilog instance. The port names in the analog netlist file are specified using portname1, portname2, ... and node1, node2, ... is used to specify the internal or global node names of the Verilog instance.

The option can be applied locally to a Verilog module or instance and is set the same as the other Virtuoso UltraSim simulator local options (see Examples below for more information). The Verilog module and instance can be regarded as a subcircuit and instance when setting the local options. This option is also valid for lower hierarchical level instances.

Note: The vlog_supply_conn option has no effect when the port of a subcircuit in the analog netlist file is not a dummy node, and the port is connected to a signal in the Verilog netlist file.

Examples

In the following Verilog netlist file example

add u1 a1 a2 sum

In the analog netlist file

.global global_vdd global_vss

.usim_opt vlog_supply_conn=[vdd global_vdd vss global_vss]

.subckt add a1 a2 sum vdd vss

M1 mid1 a1 vss vss nmos

The global_vdd node is connected to vdd in the add subcircuit of instance u1, and the global_vss node is connected to vss.

In the next Verilog netlist file example

add u1 a1 a2 sum vdd vss

tells the Virtuoso UltraSim simulator that the analog netlist file is the same as the one used in the previous example. The vdd and vss nodes of the Verilog instance u1 are not dummy nodes, so they are not connected to the global node by the simulator.

In the following Verilog netlist file local option example

xor u1 local_vss in2 out

nand4 u2 in1 in2 in3 in4 out

In the analog netlist file

.usim_opt vlog_supply_conn=[vdd global_vdd vss local_vss] xdigital.verilog.u1

.global global_vdd global_vss

.subckt xor in1 in2 out vdd vss

....

.subckt nand4 in1 in2 in3 in4 out vdd vss

tells the simulator vdd and vss of nand4 for Verilog instance u2 are still connected to dummy nodes because the option is local and is only applied to Verilog instance u1. Also, vdd and vss of xor for instance u1 are connected to the global_vdd (global) and local_vss (local) nodes in the Verilog netlist file, respectively.

skip Option

Description

Use the skip option to disable a circuit block simulation.

 

Table 3-69  skip Options 

Option

Description

skip=0

The Virtuoso UltraSim simulator includes the circuit block in the simulation (default).

skip=1

The simulator disables the simulation for the specified circuit blocks. The loading effect of the disabled blocks is considered. The inputs of the remaining circuit, connected to the disabled blocks, are connected to the ground through high resistance (that is, treated as floating nodes).

skip=2

The simulator disables the simulation for the specified circuit blocks and also disregards the loading effect of the disabled blocks. The inputs of the remaining circuit, which are connected to the disabled blocks, are connected to the ground through high resistance (that is, treated as floating nodes).

Examples

In the following Spectre syntax example

usim_opt skip=1 inst=x0.x1

tells the Virtuoso UltraSim simulator to disable the x0.x1 circuit block simulation.

In the following SPICE syntax example

.usim_opt skip=1 subckt=op_amp

tells the simulator to disable the simulation for all instances of the op_amp subcircuit.

probe_preserve Option

Description

Use to control the preserve setting of .probe statements. If probe_preserve is set to all, the simulator applies preserve=all to all .probe statements.

Note: When set to all, the probe_preserve option overrides preserve=none|all specified in .probe statements. It does not override preserve=port.

 

Table 3-70  probe_preserve Options 

Option

Description

probe_preserve=none

Does not have any impact on .probe statements (default).

probe_preserve=all

Applies preserve=all to all .probe statements.

Examples

In the following Spectre syntax example

usim_opt probe_preserve=all

tells the Virtuoso UltraSim simulator to apply preserve=all to all .probe statements in the netlist.

In the following Spectre syntax example

.usim_opt probe_preserve=all

tells the Virtuoso UltraSim simulator to apply preserve=all to all .probe statements in the netlist.

default_chk_substrate Option

Description

By default, the substrate forward-bias check (usim_report chk_substrate) reports all MOSFET substrate models in the report file. If the default_chk_substrate option is set to no, the UltraSim simulator generates a report that contains only the MOSFET substrate models that are specified using the model argument of the chk_subsrate option (see Substrate Forward-Bias Check ).

Table 3-71  default_chk_substrate Options

 

Option

Description

default_chk_substrate=yes

Causes the usim_report chk_substrate option to include all MOSFET substrate models in the report (default).

default_chk_substrate=no

Causes the usim_report chk_substrate option to include only those MOSFET substrate models in the report that are specified using the model argument of the chk_substrate option.

Example

usim_opt default_chk_substrate=no

Print File Options

nodecut_file

Description

Enables the Virtuoso UltraSim simulator to print all nodes cut during pre-processing into a file (file extension is nodecut).

 

Table 3-72  nodecut_file Options 

Option

Description

nodecut_file=0

The Virtuoso UltraSim simulator does not print cut nodes into a file (default)

nodecut_file=1

The simulator prints all cut nodes into a .nodecut file

elemcut_file

Description

Enables the simulator to print all elements cut when thresholds are exceeded into a file (file extension is elemcut).

 

Table 3-73  elemcut_file Options 

Option

Description

elemcut_file=0

The simulator does not print cut elements into a file (default)

elemcut_file=1

The simulator prints all cut elements into a .elemcut file

Disabling .print Command

enable_print

Description

Determines whether to enable or disable the .print command.

 

Table 3-74  enable_print Options 

Option

Description

enable_print=yes

Enables the .print command (Default).

enable_print=no

Disables the .print command. However, the signals in the .print statements are saved in the waveform file.

Controlling Text Wrapping of Circuit Check Reports

pcheck_wrap

Description

Controls text wrapping in circuit check reports created by Virtuoso Ultrasim Simulator.

 

Table 3-75  pcheck_wrap Options 

Option

Description

pcheck_wrap=0

Disables text wrapping in circuit check reports.

pcheck_wrap=1

Enables text wrapping in circuit check reports (Default).

Limiting the Number of Errors Generated by Design Checking Commands

dcheck_err_limit

Spectre Syntax

usim_opt dcheck_err_limit=N

SPICE Syntax

.usim_opt dcheck_err_limit=N

Description

This option limits the number of error messages that will be printed in the reports generated by the design checking (dcheck) commands. The default value is 10000.

The error message limit specified using the dcheck_err_limit option will impact the following design checks:

ParagraphBullet
MOS Voltage Check
ParagraphBullet
BJT Voltage Check
ParagraphBullet
Resistor Voltage Check
ParagraphBullet
Capacitor Voltage Check
ParagraphBullet
Diode Voltage Check
ParagraphBullet
JFET/MESFET Voltage Check

Example

Spectre Syntax

usim_opt dcheck_err_limit=1000

SPICE Syntax

.usim_opt dcheck_err_limit=1000

tells the UltraSim simulator to limit the number of error messages in the reports generated by the design checks to 1000.

Limiting the Number of Errors Generated by Power Checking Commands

pcheck_limit

Spectre Syntax

usim_opt pcheck_limit=N

SPICE Syntax

.usim_opt pcheck_limit=N

Description

This option limits the number of error messages that will be printed in the reports generated by the power checking (pcheck) commands except pcheck title hotspot (Hot Spot Node Current check). The default value is 10000.

The error message limit specified using the pcheck_limit option will impact the following power checks:

ParagraphBullet
Over Current (Excessive Current) Check
ParagraphBullet
Over Voltage (Excessive Node Voltage) Check
ParagraphBullet
DC Path Leakage Current Check
ParagraphBullet
High Impedance Node Check
ParagraphBullet
Floating Gate Induced Leakage Current Check
ParagraphBullet
Excessive Rise and Fall Time Check (EXRF)

Example

Spectre Syntax

usim_opt pcheck_limit=1000

SPICE Syntax

.usim_opt pcheck_limit=1000

tells the UltraSim simulator to limit the number of error messages in the reports generated by the power checks except pcheck title hotspot to 1000.

Limiting the Number or Errors Generated by the Timing Analysis Commands

usim_ta_err_limit

Spectre Syntax

usim_opt usim_ta_err_limit=N

SPICE Syntax

.usim_opt usim_ta_err_limit=N

This option limits the number of error messages that will be printed in the reports generated by the timing analysis (usim_ta) commands. The default value is 10000.

This check affects the following timing analysis commands:

ParagraphBullet
Hold Check
ParagraphBullet
Pulse Width Check
ParagraphBullet
Setup Check
ParagraphBullet
Timing Edge Check

Example

Spectre Syntax

usim_opt usim_ta_err_limit=1000

SPICE Syntax

.usim_opt usim_ta_err_limit=1000

tells the UltraSim simulator to limit the number of error messages in the reports generated by the timing analysis checks to 1000.

Modifying the Report Format of Violation Conditions for Design Checking Commands

dcheck_cond_report

Spectre Syntax

usim_opt dcheck_cond_report=0|1

SPICE Syntax

.usim_opt dcheck_cond_report=0|1

Description

This option modifies the report format of the violation conditions reported by the following design checks:

ParagraphBullet
MOS Voltage Check
ParagraphBullet
BJT Voltage Check
ParagraphBullet
Resistor Voltage Check
ParagraphBullet
Capacitor Voltage Check
ParagraphBullet
Diode Voltage Check
ParagraphBullet
JFET/MESFET Voltage Check

When set to 0 (default), the UltraSim simulator prints the condition expression along with the populated parameter values. When set to 1, only the parameter values are printed.

Example

Spectre Syntax

usim_opt dcheck_cond_report=1

SPICE Syntax

.usim_opt dcheck_cond_report=1

tells the UltraSim simulator to print only the parameter values and not the condition expression.

Changing Resistor, Capacitor, or MOSFET Device Values

.usim_trim

Spectre Syntax

usim_trim instance=resistor_name value=resistor_value
usim_trim instance=capacitor_name value=capacitor_value
usim_trim instance=instance_name [w=value] [l=value] [delvto=value]

SPICE Syntax

.usim_trim instance=resistor_name value=resistor_value
.usim_trim instance=capacitor_name value=capacitor_value
.usim_trim instance=instance_name [w=value] [l=value] [delvto=value]

Description

The usim_trim option can be used to change the values of resistors and capacitors, and the length, width, and threshold voltage of a MOSFET device, without modifying the netlist file.

Notes:

ParagraphBullet
The instance name must contain the full hierarchical path
ParagraphBullet
The usim_trim option does not work with stitched dspf or spef flows
ParagraphBullet
Only MOSFET device lengths, widths, and threshold voltages can be changed (use the delvto device model parameter to adjust threshold voltages)

Examples

In the following Spectre syntax example

usim_trim instance=x1.x2.cap5 value=3f

tells the Virtuoso UltraSim simulator to change the value of instance x1.x2.cap5 to 3f (Fahrenheit).

In the following SPICE syntax example

.usim_trim instance=x1.x2.x3.res5 value=1k

tells the simulator to change the value of instance x1.x2.x3.res5 to 1k (ohms).

In the next example

.usim_trim instance=x1.x2.mp00 w=10e-5 l=5e-5

tells the simulator to change the width of instance x1.x2.mp00 to 10e-5 meters and length to 5e-5 meters.

In the next example

.usim_trim instance=x1.mn1 w=1.0e-6

tells the simulator to change the width of instance x1.mn1 to 1.e-6 meters.

.reconnect

Spectre Syntax

Spectre syntax is not supported.

SPICE Syntax

.reconnect instport=instance_port_name node=node_name
.reconnect subcktport=subckt_port_name node=node_name

Changes the connection of certain instances' ports. This command is useful in the early stage of power network development. During this stage, only the estimates of the power network parasitics are available, and you are required to disable the original connection and establish new connections without manually changing the original netlist.

 

Table 3-76  .reconnect Option

Option

Description

instport

Specifies the port name of the instance whose original connection is to be disconnected. The syntax to define a port of an instance is instancename.portname where . is the hierarchical delimiter. For example, the port vdd of instance X1 is defined as X1.vdd. The port can be defined explicitly or implicitly in a global statement.

node

Specifies the node to which the new connection is to be established. Hierarchical node name is required. Wildcard is not supported.

subcktport

Specifies the port name of the subckt whose original connection is to be disconnected. This is applicable to all the instances of the subckt. As in the case of instport, the port can be defined explicitly or implicitly. The syntax to specify the port vdd of all the instances of subckt inv is inv/vdd where / is the hierarchical delimiter.

Multiple .reconnect statements are supported. If duplicate specifications are used for the same port of the same instances, the last specification is given priority. If neither the specified port nor the specified node is found in the circuit, UltraSim issues a warning and ignores the command.

Examples

.reconnect instport=x1.p node=vcc

Suppose that p is an explicit port of x1 and the hierarchical delimiter is ., this command disconnects the original connection of port p of x1 and reconnects a top-level node vcc to instance x1's port p.

.reconnect instport=x1/vdd node=vcc

Suppose that vdd is defined as a global node and / is the hierarchical delimiter, this command reconnects a top-level node vcc to the global node vdd inside instance x1, including all the hierarchies inside x1. The connection of vdd in other blocks remains unchanged.

.reconnect subcktport=pump.out node=vcc

Suppose that out is an explicit port of subckt pump and it has three instances: xpump1, xpump2, and xpump3, this command tells UltraSim that all instances' port out, that is, xpump1.out, xpump2.out, xpump3.out, have to be disconnected from their original connections and reconnected with vcc.

.reconnect instport=x1.x2.p node=x3.x4.netA

Suppose that port p is an explicit port, this command tells UltraSim to reconnect node x3.x4.netA with the port p of instance x1.x2 and disconnect the original connection of x1.x2.p.

UMI or CMI Models for Source Elements

switch_cmiumi_source

Description

This option allows you to select UltraSim Model Interface (UMI) or Compiled-Model Interface (CMI) models for all source elements. Source elements include piece-wise linear (PWL), voltage-controlled voltage source (VCVS), current-controlled current source (CCCS), and so on. UMI and CMI are different implementation models of the source elements.

 

Table 3-77  switch_cmiumi_source Options 

Option

Description

switch_cmiumi_source=0

  

Use UMI models for all source elements (Default).

switch_cmiumi_source=1

  

Use CMI models for all source elements.

Example

.usim_opt switch_cmiumi_source=1

Enables the simulator to use CMI models for all the source elements.

Transistor Subcircuit Definition or verilogA Model Selection

use_veriloga

Spectre Syntax

usim_opt use_veriloga=0|1 [inst=[instance_list]] [subckt=[subckt_list]]

SPICE Syntax

.usim_opt use_veriloga=0|1 [inst=[instance_list]] [subckt=[subckt_list]]

Description

This option allows you to use either the transistor subcircuit definition or the verilogA model. You can use this option when the netlist contains transistor subcircuit definition and verilogA model of the same name. By default, UltraSim selects the transistor subcircuit definition.

 

Table 3-78  use_veriloga Options 

Option

Description

use_veriloga=1 [inst=[instance_list]] [subckt=[subckt_list]]

  

Uses the verilogA model for the instance names specified in the inst list or selects the verilogA model specified in the subckt list. If the inst or subckt list is not specified, the verilogA model is used for all instances. Wildcard character * is supported in instance names and verilogA model names.

use_veriloga=0 [inst=[instance_list]] [subckt=[subckt_list]]

  

Uses subcircuit definition for the instance names specified in the inst list or selects the subcircuits listed in the subckt list. If the inst or subckt list is not specified, the subcircuit definition is used for all instances. Wildcard character * is supported in instance and subcircuit names.

Examples

Spectre Syntax

usim_opt use_veriloga=1 inst=[abc*]

SPICE Syntax

.usim_opt use_veriloga=1 inst=[abc*]

Uses the verilogA model for all instance names that begin with the string abc.

Spectre Syntax

usim_opt use_veriloga=1 inst=[abc xyz ]

SPICE Syntax

.usim_opt use_veriloga=1 inst=[abc xyz ]

Uses the verilogA model for abc and xyz instance names.

Spectre Syntax

usim_opt use_veriloga=0 inst=[abc]

SPICE Syntax

.usim_opt use_veriloga=0 inst=[abc]

Uses the subcircuit definition for abc instance name.

Spectre Syntax

usim_opt use_veriloga=1 subckt=[abc xyz]

SPICE Syntax

.usim_opt use_veriloga=1 subckt=[abc xyz]

Uses the verilogA models abc and xyz.

Spectre Syntax

usim_opt use_veriloga=0 subckt=[abc*]

SPICE Syntax

.usim_opt use_veriloga=0 subckt=[abc*]

Uses the subcircuit names that begin with the string abc.

Spectre Syntax

usim_opt use_veriloga= 1

SPICE Syntax

.usim_opt use_veriloga= 1

Uses the verilogA model for all instances.

Simulator Options: Default Values

The default values for the Virtuoso UltraSim simulator options are listed below in Table 3-79. The majority of these options are listed in the Simulation Options section of the output log file. The default values may vary for different versions of the simulator.

 

Table 3-79  Simulator Options and Default Values 

Option

Default Value

General

 

sim_mode

ms

speed

5

postl

0

analog

1(df/da/ms); ignored(a/mx/s)

preserve

0

pn

0

Solver

 

tol

10 m

method

be(df/da/mx/ms); gear2(a/s)

trtol

3.5

hier

1(df/da/ms); 0(a/mx/s)

maxstep_window

inf

Device Model

 

mos_method

df(df), da(da), a(ms/mx/a), s(s)

mosd_method

df(df/da), a(ms/mx/a); ignored(s)

diode_method

Juncap: a(df/da/ms/a) s(s); other diodes: s(df/da/ms/a/s)

vdd

max. supply voltage

deg_mod

r

Post-Layout

 

rshort

1u ohm

rvshort

1u ohm

lshort

0 H

lvshort

0 H

minr

0

cgnd

10 zF

cgndr

0

canalog

100 fF

canalogr

450 m

rcr_fmax

1 GHz

DC

 

dc

1(df/da/ms/mx); 3(a/s)

dc_exit

0

dc_turbo

0

dc_prolong

0

Simulation

 

abstolv

1 uV

abstoli

1 pA

progress_t

120 min

progress_p

10%

vl

supply voltage * 0.3

vh

supply voltage * 0.7

sim_start

0

dump_step

0

gmin_allnodes

0

cmin_allnodes

0

Environment

 

ade

0

Parser

 

hier_delimiter

. (period)

duplicate_subckt

error

duplicateports

error

duplicateinstance

error

warning_limit

5

warning_limit_dangling

50

warning_limit_float

50

warning_limit_near_float

50

warning_limit_ups

50

Model

 

strict_bin

1

Database

 

buschar

0

Output

 

wf_format

SST2

wf_maxsize

inf

wf_reltol

5 m(dt/da);
100 n(a/ms)

wf_tres

100 f

wf_abstolv

1 uV

wf_abstoli

1 p

wf_filter

2(df/da/ms); 1(a); 0(s)

pa_elemlen

20

Power Net Solver

 

pn_max_res

1000 ohm

Notes

ParagraphBullet
The df abbreviation stands for global df mode, da for global da mode, ms for global ms mode, mx for global mx mode, a for global a mode, and s for global s mode.
ParagraphBullet
The Virtuoso UltraSim simulator automatically promotes analog from 1 to 2 when simulating a small design (that is, a design with less than 200 active devices). The analog option is ignored in global a/s mode.
ParagraphBullet
For more information about the Virtuoso UltraSim simulation option definitions, refer to the option descriptions in this chapter or use the -help .usim_opt command.

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.