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


8 

Virtuoso UltraSim Advanced Analysis

This chapter describes the following Virtuoso® UltraSim simulator advanced analysis methods, which include dynamic and static checks.

Dynamic Checks

ParagraphBullet
Active Node Checking detects nodes with voltage changes that exceed the user defined threshold.
ParagraphBullet
Design Checking monitors device voltages during simulation (device voltage check).
ParagraphBullet
Dynamic Power Checking reports the power consumed by each element and subcircuit in the design.
ParagraphBullet
Node Activity Analysis provides information about the nodes and monitors activity such as: voltage overshoots (VOs), voltage undershoots (VUs), maximum and minimum rise/fall times, switching activity, and half-swing flag.
ParagraphBullet
Power Analysis reports the average, maximum, and RMS current at the ports of specified subcircuits and child subcircuits for a specified level of hierarchy.
ParagraphBullet
Wasted and Capacitive Current Analysis provides information about the capacitive, static, and dynamic wasted currents in specified subcircuits.
ParagraphBullet
Power Checking performs over current and high impedance node checks.
ParagraphBullet
Timing Analysis performs setup, hold, pulse width, and timing edge checks on signals.
ParagraphBullet
Bisection Timing Optimization combines multiple iterative simulations into a single characterization.

Active Node Checking

The active node checking analysis detects nodes with voltage changes that exceed the user-defined threshold. With the active nodes identified, you can choose to selectively backannotate parasitic elements during post-layout simulation.

Spectre Syntax

acheck title node=[node1 node2...] <depth=value> dv=value <exclude=[node3
node4...] time_window=[start1 stop1 start2 stop2...] <inactive=0|1|2>

SPICE Syntax

.acheck title node=[node1 node2 ...] <depth=value> dv=value <exclude=[node3
node4...] time_window=[start1 stop1 start2 stop2...] <inactive=0|1|2>

or

Spectre Syntax

acheck dv=value

SPICE Syntax

.acheck dv=value

Notes:

ParagraphBullet
A period (.) is required when using SPICE language syntax (for example, .acheck).
ParagraphBullet
The acheck dv=value and .acheck dv=value syntax continues to be supported by Cadence (it has a higher capacity active node checking analysis for larger designs).

Description

This command is used to report the active nodes in a circuit design. A node is considered active if the change in its voltage exceeds value during the checking window. If a window is not specified, the entire simulation period is used. The active nodes are listed in netlistName.actnode and netlistName.actnodelist files. The inactive nodes are listed in netlistName.inactnode and netlistName.inactnodelist files. For the .acheck dv=value command, the nodes are reported in netlistName.actnodelist or netlistName.inactnodelist files.

Arguments

 

title

User-defined title name for the active node check.

node1 node2 ...

List of node names to be checked (wildcards are supported).

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

depth=value

Defines the depth of the circuit hierarchy that a wildcard name applies to. If set to 1, only the nodes at the current level are applied (default value is infinity).

dv=value

Defines the voltage change threshold for the active nodes (default is 0.1 volt).

exclude

Defines the node names to be excluded from the check (wildcards are supported).

time_window

Defines time period of checking.

inactive=0|1|2

Defines which nodes are reported.

ParagraphBullet
0 - only active nodes are reported (default)
ParagraphBullet
1 - only inactive nodes are reported
ParagraphBullet
2 - both active and inactive nodes are reported

Examples

Spectre Syntax:

acheck dv=0.5

SPICE Syntax:

.acheck dv=0.5

Reports all the active nodes with voltage change equal to or more than 0.5V.

Spectre Syntax:

acheck achk1 node=[*] depth=2 dv=0.5 time_window=[10n 50n 100n 150n]

SPICE Syntax:

.acheck achk1 node=[*] depth=2 dv=0.5 time_window=[10n 50n 100n 150n]

Reports only the nodes in the top two hierarchical levels with voltage change equal to or more than 0.5V. In addition, the check is only performed in the time window of 10ns to 50ns and 100ns to 150ns.

Spectre Syntax:

acheck achk2 node=[x1.*] dv=0.5 exclude=[x1.y1.* x1.y2.*]

SPICE Syntax:

.acheck achk2 node=[x1.*] dv=0.5 exclude=[x1.y1.* x1.y2.*]

Checks only the active nodes in the instance x1 (and all the nodes in its child and grandchild subcircuits). However, the nodes in the instances x1.y1 and x1.y2 are excluded.

Spectre Syntax:

acheck achk3 node=[x1.*] dv=0.5 exclude=[x1.y1.* x1.y2.*] inactive=1

SPICE Syntax:

.acheck achk3 node=[x1.*] dv=0.5 exclude=[x1.y1.* x1.y2.*] inactive=1

Same as the third example, except that the inactive nodes are reported instead of the active nodes.

Design Checking

The Virtuoso UltraSim simulator allows you to perform a dynamic checking analysis on device voltages during a simulation by using the dcheck command. The analysis generates a report in a netlistName.dcheck file if the voltages exceed the specified voltage bounds.

To use the dcheck command, you can add it to the simulation netlist file, or place it in a command file and include the file in the simulation netlist file. The following design checking analyses are described in this section:

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

MOS Voltage Check

Spectre Syntax

dcheck title vmos topnode=0|1 <model=[model1, model2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <vgdl=volt> <vgdu=volt> <vdsl=volt> <vdsu=volt>
<vdbl=volt> <vdbu=volt> <vgsl=volt> <vgsu=volt> <vgbl=volt> <vgbu=volt> <vsbl=volt> <vsbu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

SPICE Syntax

.dcheck title vmos topnode=0|1 <model=[model1, model2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <vgdl=volt> <vgdu=volt> <vdsl=volt> <vdsu=volt>
<vdbl=volt> <vdbu=volt> <vgsl=volt> <vgsu=volt> <vgbl=volt> <vgbu=volt> <vsbl=volt> <vsbu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

Description

This command allows you to monitor metal oxide semiconductor (MOS) transistor terminal voltages during a simulation run, and generates a report if the voltages exceed the specified upper and lower bounds, or meets the specified conditions. You can exclude a subset of the instances from the voltage check using the xsubckt or xinst arguments. If a threshold or condition is not specified for dcheck in the netlist file, a warning message is issued by the Virtuoso UltraSim simulator and the dcheck command is ignored during the simulation.

Note: You can use the dcheck_err_limit option to limit the number of reported errors.

Arguments

 

title

Title of the voltage check.

topnode=0|1

Specifies whether the top-level node name or the hierarchical terminal name is to be reported in the dcheck report file. If set to 0, the hierarchical device terminal name is reported (default). If set to 1, the top-level node name is reported. If a top-level node name is not available, the hierarchical terminal name is used.

model

MOS voltage check is applied to transistors matching the model name (wildcards are supported).

subckt

MOS voltage check is applied to transistors belonging to all instances of the subcircuits listed (wildcards are supported).

xsubckt

MOS voltage check is excluded from instances of the subcircuits listed (wildcards are supported).

inst

MOS voltage check is applied to transistors belonging to the subcircuit instances listed (wildcards are supported).

xinst

MOS voltage check is excluded from the subcircuit instances listed (wildcards are supported).

Note: The inst and xinst arguments can only be used to specify subcircuit instances, but not device instances.

vgdl=volt

Reports the condition if Vgd is less than the specified lower bound voltage value.

vgdu=volt

Reports the condition if Vgd is greater than the specified upper bound voltage value.

vdsl=volt

Reports the condition if Vds is less than the specified lower bound voltage value.

vdsu=volt

Reports the condition if Vds is greater than the specified upper bound voltage value.

vdbl=volt

Reports the condition if Vdb is less than the specified lower bound voltage value.

vdbu=volt

Reports the condition if Vdb is greater than the specified upper bound voltage value.

vgsl=volt

Reports the condition if Vgs is less than the specified lower bound voltage value.

vgsu=volt

Reports the condition if Vgs is greater than the specified upper bound voltage value.

vgbl=volt

Reports the condition if Vgb is less than the specified lower bound voltage value.

vgbu=volt

Reports the condition if Vgb is greater than the specified upper bound voltage value.

vsbl=volt

Reports the condition if Vsb is less than the specified lower bound voltage value.

vsbu=volt

Reports the condition if Vsb is greater than the specified upper bound voltage.

Note: The vsbu argument and other arguments listed in this table can be used with constant parameters, but must be enclosed by single quotation marks (for example, vsbu='-par1').

cond=expression

Defines the conditional expression as the checking criteria. When the condition is met, the simulator generates a report. The conditional expression supports the following operators: <, >, <=, >=, ==, ||, &&, and variables: vgs, vgd, vds, vdb, vsb, l, w, vd, vg, vs, vb. The expression can be a combination of linear and non-linear expressions.

The conditional check can be combined with the lower and upper threshold bounds mentioned in the Description. The conditional check (cond=expr) specifies which devices need to be checked and the threshold bounds (such as, vgsl and vgsu) are used to check if the devices contain violations.

Note: The report format of the violation conditions can be changed by using the dcheck_cond_report option.

duration=dtime

Reports the condition if device voltages are out of bounds for a duration of time longer than dtime (dtime default value is equal to the minimum time step of the simulation).

time_window

The time period specified for checking in which the first number is the start time point and the second number is the stop time point. For example, start1 to stop1 is the first time period and start2 to stop2 is the second time period.

Note: Only ascending time points can be used (for example, start1 < stop1 < start2 < stop2).

probe=0|1

Flag to probe node voltage for devices checked. If set to 0, no probe is performed (default). If set to 1, all node voltages for devices checked with dcheck are probed.

preserve=none|all

Defines whether all devices are preserved.

*
none does not preserve devices or nodes
*
all preserves all devices or nodes, including passive devices. Is valid only when wildcards are used.

Examples

Spectre Syntax:

dcheck chk1 vmos model=[tt] inst=[X1] vgsu=1.0 vgsl=0.5 probe=1

dcheck chk2 vmos model=[tt2] cond=((vgs<-3 || vds>3) && l<0.2u)

dcheck chk3 vmos model=[tt3] cond=(vgs*vgs>1 && sin((2*3.14*vds)/0.45)>0.5 ||
vsb<-1) time_window=[1u 10u]

dcheck chk4 vmos model=[tt4] cond=(vgs>0.5 || vgd>0.5) vdsu=1.5

dcheck chk5 vmos xinst=[I2*] xsubckt=[Reg*] vgsu=1.86

dcheck chk6 vmos inst=[I19] xinst=[I19.I19 I19.I116] vgsu=1.86

dcheck chk7 vmos subckt=[pll*] xsubckt=[osc buf] vgsu=1.86

dcheck chk8 vmos subckt=[pll*] xsubckt=[osc buf] vgsu=1.86 topnode=1

SPICE Syntax:

.dcheck chk1 vmos model=[tt] inst=[X1] vgsu=1.0 vgsl=0.5 probe=1

.dcheck chk2 vmos model=[tt2] cond='(vgs<-3 || vds>3) && l<0.2u'

.dcheck chk3 vmos model=[tt3] cond='vgs*vgs>1 && sin((2*3.14*vds)/0.45)>0.5 ||
vsb<-1' time_window=[1u 10u]

.dcheck chk4 vmos model=[tt4] cond='vgs>0.5 || vgd>0.5' vdsu=1.5

.dcheck chk5 vmos xinst=[I2*] xsubckt=[Reg*] vgsu=1.86

.dcheck chk6 vmos inst=[I19] xinst=[I19.I19 I19.I116] vgsu=1.86

.dcheck chk7 vmos subckt=[pll*] xsubckt=[osc buf] vgsu=1.86

.dcheck chk8 vmos subckt=[pll*] xsubckt=[osc buf] vgsu=1.86 topnode=1

The command line of chk1 checks all MOSFETs using model tt in block X1. The devices that meet vgs>1 or vgs<0.5 criteria are reported. Where probe=1, all node voltages of the tt devices are probed.

The command line of chk2 checks all MOSFETs using model tt2, whether vgs<-3 or vds>3, when MOSFET length is less than 0.2 um. If the condition is met, the devices are reported.

In the command line of chk3, a conditional design analysis check is performed by the simulator, and includes nonlinear expressions. The MOSFETs that meet the condition are reported.

The command line of chk4 combines the conditional and upper/lower threshold bound checks. Only the MOSFET models that meet the specified conditions are checked.

In the command line of chk5, all MOSFETs in the netlist file are checked. The subcircuit instances with names that match I2*, instances of subcircuits with the name Reg*, and their sub-hierarchies are excluded. MOSFETs that meet the vgsu>1.86 criteria are reported.

In the command line of chk6, all MOSFETs belonging to instance I19 and its sub-hierarchy are checked. Subcircuit instances I19.I19 and I19.I116 are excluded. MOSFETs that meet the vgsu>1.86 criteria are reported.

The command line of chk7 checks all MOSFETs belonging to instances of the subcircuits with names that match pll* and their sub-hierarchies. Instances of subcircuits osc and buf are excluded. MOSFETs that meet the vgsu>1.86 criteria are reported.

The command line of chk8 checks the same thing as chk7 but reports the top-level node names rather than hierarchical terminal names into dcheck report file.

Sample Output

 

Title

Model

From
(ns)

To
(ns)

v_mvio
(vth)

chk_type

Device

Drain

Gate

Source

Bulk

chk1

tt

5.0

5.2

1.2 (>1.0)

vgsu

X1.mn1

-

X1.g

X1.s

-

chk1

tt

7.0

7.5

0.3 (<0.5)

vgsl

X1.mn2

-

X1.g

X1.s

-

chk2

tt2

2.0

8.5

-

cond_
dcheck

X1.mn3

-

-

-

-

chk4

tt4

3.0

7.5

1.7 (>1.5)

cond_
vgsu

X1.mn3

-

X1.g

X1.s

-

chk5

nmos1.1

71

72

1.8948
(>1.86)

vgsu

I19.I20.N00

-

I19.I20
.A

I19.I20
.0

-

chk5

nmos1.1

81

82

1.8968
(>1.86)

vgsu

I19.I20.N00

-

I19.I20
.A

I19.I20
.0

-

chk6

nmos1.1

71

72

1.8948
(>1.86)

vgsu

19.I20
.N00

-

I19.I20.A

I19.I20.0

-

chk6

nmos1.1

81

82

1.8968
(>1.86)

vgsu

19.I20
.N00

-

I19.I20.A

I19.I20.0

-

chk7

nmos1.1

31

32

1.8641
(>1.86)

vgsu

I19.I116
.MN0

-

I19.I116
.A

I19.I116
.0

-

chk7

nmos1.1

83

84

1.8671
(>1.86)

vgsu

I19.I116
.MN0

-

I19.I116
.A

I19.I116
.0

-

chk8

nmos1.1

31

32

1.8641
(>1.86)

vgsu

I19.I116
.MN0

-

reset

0

-

chk8

nmos1.1

83

84

1.8671
(>1.86)

vgsu

I19.I116
.MN0

-

reset

0

-

Where:

v_mvio is the maximum violation voltage within the check window.

BJT Voltage Check

Spectre Syntax

dcheck title vbjt topnode=0|1 <model=[model1 model2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <vbcl=volt> <vbcu=volt> <vbel=volt> <vbeu=volt>
<vbsl=volt> <vbsu=volt> <vcel=volt> <vceu=volt> <vcsl=volt> <vcsu=volt> <vesl=volt> <vesu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

SPICE Syntax

.dcheck title vbjt topnode=0|1 <model=[model1 model2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <vbcl=volt> <vbcu=volt> <vbel=volt> <vbeu=volt>
<vbsl=volt> <vbsu=volt> <vcel=volt> <vceu=volt> <vcsl=volt> <vcsu=volt> <vesl=volt> <vesu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

Description

This command allows you to monitor bipolar junction transistor (BJT) terminal voltages during a simulation run, and generates a report if the voltages exceed the specified upper and lower bounds, or meets the specified conditions. You can exclude a subset of the instances from the voltage check using the xsubckt or xinst arguments. If a threshold or condition is not specified for dcheck in the netlist file, a warning message is issued by the Virtuoso UltraSim simulator and the dcheck command is ignored during the simulation.

Note: You can use the dcheck_err_limit option to limit the number of reported errors.

Arguments

 

title

Title of the voltage check.

topnode=0|1

Specifies whether the top-level node name or the hierarchical terminal name is to be reported in the dcheck report file. If set to 0, the hierarchical device terminal name is reported (default). If set to 1, the top-level node name is reported. If a top-level node name is not available, the hierarchical terminal name is used.

model

BJT voltage check is applied to transistors matching the model name (wildcards are supported).

subckt

BJT voltage check is applied to transistors belonging to all instances of the subcircuits listed (wildcards are supported).

xsubckt

BJT voltage check is excluded from instances of the subcircuits listed (wildcards are supported).

inst

BJT voltage check is applied to transistors belonging to the subcircuit instances listed (wildcards are supported).

xinst

BJT voltage check is excluded from the subcircuit instances listed (wildcards are supported).

Note: The inst and xinst arguments can only be used to specify subcircuit instances, but not device instances.

vbcl=volt

Reports the condition if Vbc is less than the specified lower bound voltage value.

vbcu=volt

Reports the condition if Vbc is greater than the specified upper bound voltage value.

vbel=volt

Reports the condition if Vbe is less than the specified lower bound voltage value.

vbeu=volt

Reports the condition if Vbe is greater than the specified upper bound voltage value.

vbsl=volt

Reports the condition if Vbs is less than the specified lower bound voltage value.

vbsu=volt

Reports the condition if Vbs is greater than the specified upper bound voltage value.

vcel=volt

Reports the condition if Vce is less than the specified lower bound voltage value.

vceu=volt

Reports the condition if Vce is greater than the specified upper bound voltage value.

vcsl=volt

Reports the condition if Vcs is less than the specified lower bound voltage value.

vcsu=volt

Reports the condition if Vcs is greater than the specified upper bound voltage value.

vesl=volt

Reports the condition if Ves is less than the specified lower bound voltage value.

vesu=volt

Reports the condition if Ves is greater than the specified upper bound voltage.

Note: The vesu argument and other arguments listed in this table can be used with constant parameters, but must be enclosed by single quotation marks (for example, vesu='-par1').

cond=expression

Defines the conditional expression as the checking criteria. When the condition is met, the simulator generates a report. The conditional expression supports the following operators: <, >, <=, >=, ==, ||, &&, and variables: vbc, vbe, vbs, vce, vcs, ves, vs, vb, vc, ve. The expression can be a combination of linear and non-linear expressions.

The conditional check can be combined with the lower and upper threshold bounds mentioned in the Description.

Note: The report format of the violation conditions can be changed by using the dcheck_cond_report option.

duration=dtime

Reports the condition if device voltages are out of bounds for a duration of time longer than dtime (dtime default value is equal to the minimum time step of the simulation).

time_window

The time period specified for checking in which the first number is the start time point and the second number is the stop time point. For example, start1 to stop1 is the first time period and start2 to stop2 is the second time period.

Note: Only ascending time points can be used (for example, start1 < stop1 < start2 < stop2).

probe=0|1

Flag to probe node voltage for devices checked. If set to 0, no probe is performed (default). If set to 1, all node voltages for devices checked with dcheck are probed.

preserve=none|all

Defines whether all devices are preserved.

*
none preserves active devices only
*
all preserves all devices or nodes, including passive devices

Example

Spectre Syntax:

dcheck chk1 vbjt model=[tt] vbeu=1.0 inst=[X1] xinst=[X1.X0] time_window=[5n 10u]
probe=1

dcheck chk2 vbjt vbeu=0.7 vbel=-0.5 inst=[i1]

dcheck chk3 vbjt vbeu=0.7 vbel=-0.5 inst=[i1] topnode=1

SPICE Syntax:

.dcheck chk1 vbjt model=[tt] vbeu=1.0 inst=[X1] xinst=[X1.X0] time_window=[5n 10u]
probe=1

.dcheck chk2 vbjt vbeu=0.7 vbel=-0.5 inst=[i1]

.dcheck chk3 vbjt vbeu=0.7 vbel=-0.5 inst=[i1] topnode=1

The command line of chk1 checks voltages of all BJTs using the tt model in instance X1 and its sub-hierarchy from transient time 5ns to 10us, excluding the X1.X0 instance. BJTs that meet the vbeu>1V criteria are reported by the simulator. Where probe=1, all node voltages of the tt devices are probed.

The command line of chk2 checks all BJT voltages in the instance i1 and its sub-hierarchy. BJTs that meet the vbeu>0.7V or vbeu<-0.5V criteria are reported by the simulator.

The command line of chk3 checks the same thing as chk2 but reports the top-level node names rather than hierarchical terminal names in the dcheck report file.

Sample Output

 

Title

Model

From

(ns)

To

(ns)

v_mvio

(vth)

chk_t-ype

Device

Collector

Base

Emitter

Subs-trate

chk1

tt

5.0

5.2

1.2 (>1.0)

vbeu

X1.q1

-

X1.b

X1.e

-

chk2

knpn

1

1.6

5.03608(>0.7)

vbeu

il.q0

-

il.net52

il.vss!

-

chk2

knpn

0

40

-0.57091(<-0.5)

vbe1

il.q2

-

il.iref

il.vdd!

-

chk3

knpn

1

1.6

5.03608(>0.7)

vbeu

il.q0

-

il.net52

vss!

-

chk3

knpn

0

40

-0.57091(<-0.5)

vbe1

il.q2

-

net35

vdd!

-

Where:

v_mvio is the maximum violation voltage within the check window.

Resistor Voltage Check

Spectre Syntax

dcheck title vres topnode=0|1 <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2…]> <xinst=[xinst1 xinst2…]> <vpnl=volt> <vpnu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

SPICE Syntax

.dcheck title vres topnode=0|1 <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2…]> <xinst=[xinst1 xinst2…]> <vpnl=volt> <vpnu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

Description

This command allows you to monitor resistor (primitive element or bsource) terminal voltages during a simulation run, and generates a report if the voltages exceed the specified upper and lower bounds, or meets the specified conditions. You can exclude a subset of the instances from the voltage check using the xsubckt or xinst arguments. If a threshold or condition is not specified for dcheck in the netlist file, a warning message is issued by the Virtuoso UltraSim simulator and the dcheck command is ignored during the simulation.

Note: You can use the dcheck_err_limit option to limit the number of reported errors.

Arguments

 

title

Title of the voltage check.

topnode=0|1

Specifies whether the top-level node name or the hierarchical terminal name is to be reported in the dcheck report file. If set to 0, the hierarchical device terminal name is reported (default). If set to 1, the top-level node name is reported. If a top-level node name is not available, the hierarchical terminal name is used.

subckt

The voltage check is applied to resistors belonging to all instances of the subcircuits listed (wildcards are supported).

xsubckt

The voltage check is excluded from instances of the subcircuits listed (wildcards are supported).

inst

The voltage check is applied to resistors belonging to the subcircuit instances listed (wildcards are supported).

xinst

The voltage check is excluded from the subcircuit instances listed (wildcards are supported).

Note: The inst and xinst arguments can only be used to specify subcircuit instances, but not device instances.

vpnl=volt

Reports the condition if Vpn is less than the specified lower bound voltage value.

vpnu=volt

Reports the condition if Vpn is greater than the specified upper bound voltage value.

Note: The vpnu argument and other arguments listed in this table can be used with constant parameters, but must be enclosed by single quotation marks (for example, vpnu='-par1').

cond=expression

Defines the conditional expression as the checking criteria. When the condition is met, the simulator generates a report. The conditional expression supports the following operators: <, >, <=, >=, ==, ||, &&, and variables: vpn , vp and vn. The expression can be a combination of linear and non-linear expressions.

The conditional check can be combined with the lower and upper threshold bounds mentioned in the Description.

Note: The report format of the violation conditions can be changed by using the dcheck_cond_report option.

duration=dtime

Reports the condition if device voltages are out of bounds for a duration of time longer than dtime (dtime default value is equal to the minimum time step of the simulation).

time_window

The time period specified for checking in which the first number is the start time point and the second number is the stop time point. For example, start1 to stop1 is the first time period and start2 to stop2 is the second time period.

Note: Only ascending time points can be used (for example, start1 < stop1 < start2 < stop2).

probe=0|1

Flag to probe node voltage for devices checked. If set to 0, no probe is performed (default). If set to 1, all node voltages for devices checked with dcheck are probed.

preserve=none|all

Defines whether all devices are preserved.

*
none preserves active devices only
*
all preserves all devices or nodes, including passive devices

Note: Set preserve=all if the specified resistor is subject to RC reduction.

Example

Spectre Syntax:

dcheck chk1 vres vpnu=1.0 inst=[X1] time_window=[5n 10u] probe=1

dcheck chk2 vres inst=[I19] xinst=[I19.I19.I3] vpnu=0.05

dcheck chk3 vres inst=[I19] xinst=[I19.I19.I3] vpnu=0.05 topnode=1

SPICE Syntax:

.dcheck chk1 vres vpnu=1.0 inst=[X1] time_window=[5n 10u] probe=1

.dcheck chk2 vres inst=[I19] xinst=[I19.I19.I3] vpnu=0.05

.dcheck chk3 vres inst=[I19] xinst=[I19.I19.I3] vpnu=0.05 topnode=1

The command line of chk1 checks all resistors belonging to the X1 instance and its sub-hierarchy from transient simulation time 5 ns to 10 us. The resistors that meet the vpnu>1.0 criteria are reported and the node voltages of all resistors inside X1 are probed.

The command line of chk2 checks all the resistors for instance I19 and its sub-hierarchy, from which I19.I19.I3 instance is excluded. The resistors that meet the vpnu>0.05 criteria are reported.

The command line of chk3 checks the same thing as chk2 but reports the top-level node names rather than hierarchical terminal names into dcheck report file.

Sample Output

 

Title

Model

From (ns)

To (ns)

v_mvio(vth)

chk_type

Device

1

2

chk1

tt

5.0

5.2

1.2 (>1.0)

vpnu

X1.r1

X1.n1

X1.n2

chk2

R

30

31

0.061919(>0.05)

vpnu

I19.R2.r1

I19.R2.PLUS

I19.R2.MINUS

chk3

R

30

31

0.061919(>0.05)

vpnu

I19.R2.r1

I19.n5

I19.n6

Where:

v_mvio is the maximum violation voltage within the check window.

Capacitor Voltage Check

Spectre Syntax

dcheck title vcap topnode=0|1 <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <vpnl=volt> <vpnu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

SPICE Syntax

.dcheck title vcap topnode=0|1 <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <vpnl=volt> <vpnu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>>

Description

This command allows you to monitor capacitor (primitive element or bsource) terminal voltages during a simulation run, and generates a report if the voltages exceed the specified upper and lower bounds, or meet the specified conditions. You can exclude a subset of the instances from the voltage check using the xsubckt or xinst arguments. If a threshold or condition is not specified for dcheck in the netlist file, a warning message is issued by the Virtuoso UltraSim simulator and the dcheck command is ignored during the simulation.

Note: You can use the dcheck_err_limit option to limit the number of reported errors.

Arguments

 

title

Title of the voltage check.

topnode=0|1

Specifies whether the top-level node name or the hierarchical terminal name is to be reported in the dcheck report file. If set to 0, the hierarchical device terminal name is reported (default). If set to 1, the top-level node name is reported. If a top-level node name is not available, the hierarchical terminal name is used.

subckt

The voltage check is applied to capacitors belonging to all instances of the subcircuits listed (wildcards are supported).

xsubckt

The voltage check is excluded from instances of the subcircuits listed (wildcards are supported).

inst

The voltage check is applied to capacitors belonging to the subcircuit instances listed (wildcards are supported).

xinst

The voltage check is excluded from the subcircuit instances listed (wildcards are supported).

Note: The inst and xinst arguments can only be used to specify subcircuit instances, but not device instances.

vpnl=volt

Reports the condition if Vpn is less than the specified lower bound voltage value.

vpnu=volt

Reports the condition if Vpn is greater than the specified upper bound voltage value.

Note: The vpnu argument and other arguments listed in this table can be used with constant parameters, but must be enclosed by single quotation marks (for example, vpnu='-par1').

cond=expression

Defines the conditional expression as the checking criteria. When the condition is met, the simulator generates a report. The conditional expression supports the following operators: <, >, <=, >=, ==, ||, &&, and variables: vpn, vp, and vn. The expression can be a combination of linear and non-linear expressions.

The conditional check can be combined with the lower and upper threshold bounds mentioned in the Description.

Note: The report format of the violation conditions can be changed by using the dcheck_cond_report option.

duration=dtime

Reports the condition if device voltages are out of bounds for a duration of time longer than dtime (dtime default value is equal to the minimum time step of the simulation).

time_window

The time period specified for checking in which the first number is the start time point and the second number is the stop time point. For example, start1 to stop1 is the first time period and start2 to stop2 is the second time period.

Note: Only ascending time points can be used (for example, start1 < stop1 < start2 < stop2).

probe=0|1

Flag to probe node voltage for devices checked. If set to 0, no probe is performed (default). If set to 1, all node voltages for devices checked with dcheck are probed.

preserve=none|all

Defines whether all devices are preserved.

*
none preserves active devices only
*
all preserves all devices or nodes, including passive devices

Note: Set preserve=all if the specified capacitor is subject to RC reduction.

Examples

Spectre Syntax:

dcheck chk1 vcap vpnu=1.0 inst=[X1] time_window=[5n 10u]

dcheck chk2 vcap xinst=[I19.I19.I3] vpnu=1.1

dcheck chk3 vcap vpnl=-5 preserve=all

dcheck chk4 vcap vpnl=-5 preserve=all topnode=1

SPICE Syntax:

.dcheck chk1 vcap vpnu=1.0 inst=[X1] time_window=[5n 10u]

.dcheck chk2 vcap xinst=[I19.I19.I3] vpnu=1.1

.dcheck chk3 vcap vpnl=-5 preserve=all

.dcheck chk4 vcap vpnl=-5 preserve=all topnode=1

The command line of chk1 checks all the capacitors belonging to instance X1 and its sub-hierarchy from transient time 5 ns to 10 us. The capacitors that meet the vpnu>1.0V criteria are reported.

The command line of chk2 checks all the capacitors in the netlist file, excluding the I19.I19.I3 instance and its sub-hierarchy. The capacitors that meet the vpnu>1.1V criteria are reported.

The command line of chk3 checks all the capacitors in the netlist file. The capacitors that meet the vpnl<-5V criterion are reported.

The command line of chk4 checks the same thing as chk3 but reports the top-level node names rather than the hierarchical terminal names into the dcheck report file.

Sample Output

 

Title

Model

From (ns)

To (ns)

v_mvio(vth)

chk_type

Device

1

2

chk1

tt

5.0

5.2

1.2 (>1.0)

vpnu

X1.c1

X1.n1

X1.n2

chk2

C

0

23.6

1.8827
(>1.1)

vpnu

C7

clk_p0_1x

0

chk3

C

0

40

-6.50024(<-5)

vpnl

il.c0

il.net6

il._net0

chk4

C

0

40

-6.50024(<-5)

vpnl

il.c0

il.net6

out

Where:

v_mvio is the maximum violation voltage within the check window.

Diode Voltage Check

Spectre Syntax

dcheck title vdio topnode=0|1 <model=[model1 model2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <vpnl=volt> <vpnu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

SPICE Syntax

.dcheck title vdio topnode=0|1 <model=[model1 model2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <vpnl=volt> <vpnu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

Description

This command allows you to monitor diode terminal voltages during a simulation run, and generates a report if the voltages exceed the specified upper and lower bounds, or meet the specified conditions. You can exclude a subset of the instances from the voltage check using the xsubckt or xinst arguments. If a threshold or condition is not specified for dcheck in the netlist file, a warning message is issued by the Virtuoso UltraSim simulator and the dcheck command is ignored during the simulation.

Note: You can use the dcheck_err_limit option to limit the number of reported errors.

Arguments

 

title

Title of the voltage check.

topnode=0|1

Specifies whether the top-level node name or the hierarchical terminal name is to be reported in the dcheck report file. If set to 0, the hierarchical device terminal name is reported (default). If set to 1, the top-level node name is reported. If a top-level node name is not available, the hierarchical terminal name is used.

model

The diode voltage check is applied to diodes matching the model name (wildcards are supported).

subckt

The diode voltage check is applied to diodes belonging to all instances of the subcircuits listed (wildcards are supported).

xsubckt

The diode voltage check is excluded from instances of the subcircuits listed (wildcards are supported).

inst

The diode voltage check is applied to diodes belonging to the subcircuit instances listed (wildcards are supported).

xinst

The diode voltage check is excluded from the subcircuit instances listed (wildcards are supported).

Note: The inst and xinst arguments can only be used to specify subcircuit instances, but not device instances.

vpnl=volt

Reports the condition if Vpn is less than the specified lower bound voltage value.

vpnu=volt

Reports the condition if Vpn is greater than the specified upper bound voltage value.

Note: The vpnu argument and other arguments listed in this table can be used with constant parameters, but must be enclosed by single quotation marks (for example, vpnu='-par1').

cond=expression

Defines the conditional expression as the checking criteria. When the condition is met, the simulator generates a report. The conditional expression supports the following operators: <, >, <=, >=, ==, ||, &&, and variables: vpn, vp, and vn. The expression can be a combination of linear and non-linear expressions.

The conditional check can be combined with the lower and upper threshold bounds mentioned in the Description.

Note: The report format of the violation conditions can be changed by using the dcheck_cond_report option.

duration=dtime

Reports the condition if device voltages are out of bounds for a duration of time longer than dtime (dtime default value is equal to the minimum time step of the simulation).

time_window

The time period specified for checking in which the first number is the start time point and the second number is the stop time point. For example, start1 to stop1 is the first time period and start2 to stop2 is the second time period.

Note: Only ascending time points can be used (for example, start1 < stop1 < start2 < stop2).

probe=0|1

Flag to probe node voltage for devices checked. If set to 0, no probe is performed (default). If set to 1, all node voltages for devices checked with dcheck are probed.

preserve=none|all

Defines whether all devices are preserved.

*
none preserves active devices only
*
all preserves all devices or nodes, including passive devices

Examples

Spectre Syntax:

dcheck diochk1 vdio vpnu=2 vpnl=0

dcheck diochk2 vdio subckt=[pll] xinst=[I19.I19.I3] vpnl=0

dcheck diochk3 vdio subckt=[pll] xinst=[I19.I19.I3] vpnl=0 topnode=1

SPICE Syntax:

.dcheck diochk1 vdio vpnu=2 vpnl=0

.dcheck diochk2 vdio subckt=[pll] xinst=[I19.I19.I3] vpnl=0

.dcheck diochk3 vdio subckt=[pll] xinst=[I19.I19.I3] vpnl=0 topnode=1

The command line of diochk1 checks all the diodes in the netlist file. The diodes that meet the vpnu>2 or vpnl<0 criteria are reported by the simulator.

The command line of diochk2 checks the diodes in the instances of subcircuit p11 and its sub-hierarchy, excluding the I19.I19.I3 instance. The diodes that meet the vpnl<0 criterion are reported by the simulator.

The command line of diochk3 checks the same thing as diochk2 but reports the top-level node names rather than the hierarchical terminal names into the dcheck report file.

Sample Output

 

Title

Model

From (ns)

To (ns)

v_mvio(vth)

chk_type

Device

1

2

diochk1

D

29

30

-0.5 (< 0)

vpnl

d1

n1

n2

diochk1

D

5

25

4.5 (> 2)

vpnu

d1

n1

n2

diochk2

D

0

85

-1.0499 (<0)

vpnl

I19.D2

I19.vss

I19.vcom

diochk2

D

0

85

-1.26648 (<0)

vpnl

I19.D3

I19. vss

I19.vcop

diochk3

D

0

85

-1.0499 (<0)

vpnl

I19.D2

0

vcom

diochk3

D

0

85

-1.26648 (<0)

vpnl

I19.D3

0

vcop

Where:

v_mvio is the maximum violation voltage within the check window.

JFET/MESFET Voltage Check

Spectre Syntax

dcheck title vjft topnode=0|1 <model=[model1, model2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <vgdl=volt> <vgdu=volt> <vdsl=volt> <vdsu=volt>
<vdbl=volt> <vdbu=volt> <vgsl=volt> <vgsu=volt> <vgbl=volt> <vgbu=volt> <vsbl=volt> <vsbu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

SPICE Syntax

.dcheck title vjft topnode=0|1 <model=[model1, model2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <vgdl=volt> <vgdu=volt> <vdsl=volt> <vdsu=volt>
<vdbl=volt> <vdbu=volt> <vgsl=volt> <vgsu=volt> <vgbl=volt> <vgbu=volt> <vsbl=volt> <vsbu=volt> <cond=expression> <duration=dtime> <time_window=[start1 stop1 start2 stop2 ...]> <probe=0|1> <preserve=none|all>

Description

This command allows you to monitor junction field effect transistor (JFET) or metal semiconductor field effect transistor (MESFET) voltages during a simulation run, and generates a report if the terminal voltages exceed the specified upper and lower bounds, or meets the specified conditions. You can exclude a subset of the instances from the voltage check using the xsubckt or xinst arguments. If a threshold or condition is not specified for the dcheck command in the netlist file, a warning message is issued by the Virtuoso UltraSim simulator and the dcheck command is ignored during the simulation.

Note: You can use the dcheck_err_limit option to limit the number of reported errors.

Arguments

 

title

Title of the voltage check.

topnode=0|1

Specifies whether the top-level node name or the hierarchical terminal name is to be reported in the dcheck report file. If set to 0, the hierarchical device terminal name is reported (default). If set to 1, the top-level node name is reported. If a top-level node name is not available, the hierarchical terminal name is used.

model

JFET/MESFET voltage check is applied to transistors matching the model name (wildcards are supported).

subckt

JFET/MESFET voltage check is applied to transistors belonging to all instances of the subcircuits listed (wildcards are supported).

xsubckt

JFET/MESFET voltage check is excluded from instances of the subcircuits listed (wildcards are supported).

inst

JFET/MESFET voltage check is applied to transistors belonging to the subcircuit instances listed (wildcards are supported).

xinst

JFET/MESFET voltage check is excluded from the subcircuit instances listed (wildcards are supported).

Note: The inst and xinst arguments can only be used to specify subcircuit instances, but not device instances.

vgdl=volt

Reports the condition if Vgd is less than the specified lower bound voltage value.

vgdu=volt

Reports the condition if Vgd is greater than the specified upper bound voltage value.

vdsl=volt

Reports the condition if Vds is less than the specified lower bound voltage value.

vdsu=volt

Reports the condition if Vds is greater than the specified upper bound voltage value.

vdbl=volt

Reports the condition if Vdb is less than the specified lower bound voltage value.

vdbu=volt

Reports the condition if Vdb is greater than the specified upper bound voltage value.

vgsl=volt

Reports the condition if Vgs is less than the specified lower bound voltage value.

vgsu=volt

Reports the condition if Vgs is greater than the specified upper bound voltage value.

vgbl=volt

Reports the condition if Vgb is less than the specified lower bound voltage value.

vgbu=volt

Reports the condition if Vgb is greater than the specified upper bound voltage value.

vsbl=volt

Reports the condition if Vsb is less than the specified lower bound voltage value.

vsbu=volt

Reports the condition if Vsb is greater than the specified upper bound voltage.

Note: The vsbu argument and other arguments listed in this table can be used with constant parameters, but must be enclosed by single quotation marks (for example, vsbu='-par1').

cond=expression

Defines the conditional expression as the checking criteria. When the condition is met, the simulator generates a report. The conditional expression supports the following operators: <, >, <=, >=, ==, ||, &&, and variables: vgd, vds, vdb, vgs, vgb, vsb, l, w, vd, vg, vs, vb. The expression can be a combination of linear and non-linear expressions.

The conditional check can be combined with the lower and upper threshold bounds mentioned in the Description.

Note: The report format of the violation conditions can be changed by using the dcheck_cond_report option.

duration=dtime

Reports the condition if device voltages are out of bounds for a duration of time longer than dtime (dtime default value is equal to the minimum time step of the simulation).

time_window

The time period specified for checking in which the first number is the start time point and the second number is the stop time point. For example, start1 to stop1 is the first time period and start2 to stop2 is the second time period.

Note: Only ascending time points can be used (for example, start1 < stop1 < start2 < stop2).

probe=0|1

Flag to probe node voltage for devices checked. If set to 0, no probe is performed (default). If set to 1, all node voltages for devices checked with dcheck are probed.

preserve=none|all

Defines whether all devices are preserved.

*
none preserves active devices only
*
all preserves all devices or nodes, including passive devices

Examples

Spectre Syntax:

dcheck chk1 vjft model=[tt] inst=[X1] xsubckt=[Reg*] vgsu=1.0 vgsl=0.5 probe=1

dcheck chk2 vjft model=[tt2] cond=((vgs<-3 || vds>3) && l<0.2u)

SPICE Syntax

.dcheck chk1 vjft model=[tt] inst=[X1] xsubckt=[Reg*] vgsu=1.0 vgsl=0.5 probe=1

.dcheck chk2 vjft model=[tt2] cond='(vgs<-3 || vds>3) && l<0.2u'

The command line of chk1 in the netlist file tells the Virtuoso UltraSim simulator to check all JFET/MESFET devices using model tt in block X1 and its sub-hierarchy. Instances of subcircuits with names that match *Reg are excluded (if instances of the Reg* subcircuits are not part of the X1 instance, their sub-hierarchies are also excluded). The devices that meet the vgs>1 or vgs<0.5 criteria are reported by the simulator. Where probe=1, all node voltages of the tt devices are probed.

The command line of chk2 tells the simulator to check all JFET/MESFET devices using model tt2, whether vgs<-3 or vds>3, and when the JFET/MESFET length is less than 0.2 um. If the conditions are met, the devices are reported by the simulator.

Dynamic Power Checking

The section introduces the Virtuoso UltraSim simulator dynamic power analyses. These commands allow you to perform a power analysis using probe and measure statements, and report the power consumed by each element and subcircuit in the design.

.measure/power

Description

The power measure statement monitors the average, maximum, minimum, peak-to-peak, RMS, and integral (total energy) of the instantaneous power consumed by the elements or subcircuit. If the netlist filename is circuit.sp, the value files are called circuit.meas# and circuit.mt#.

Examples

In the following example

.measure tran power_max max `v(xtop.x23.out) * x0(xtop.x23.out)` from=0ns to=1us

tells the Virtuoso UltraSim simulator to measure the maximum power of port out of instance xtop.x23, excluding all other lower hierarchical subcircuit ports within the time window of 0 to 1us.

The next example

.measure tran power_min min `v(xtop.x23.out) * x(xtop.x23.out)` from=0ns to=1us

tells the simulator to measure the minimum power of port out of instance xtop.x23 and all instances below it.

The next example

.measure tran power_avg avg `v(1) * i1(r1)` from=0ns to=1us

tells the simulator to measure the average power on element r1 in the circuit.

The next example

.measure tran energy integ ` v(xtop.x23.out) * x(xtop.x23.out)` from=0ns to=10us

tells the simulator to measure the integral power (total energy) of port out of instance xtop.x23 and all instances below it within the time window of 0 to 10us.

.probe/power

Description

The power probe statement is used to set up power probes on elements or subcircuits for a specified output quantity. Two output files are created for this probe statement. If the netlist filename is circuit.sp, the output files are called circuit.expr.trn and circuit.expr.dsn.

Examples

In the following example

.probe tran power=par(`v(xtop.x23.out) * x0(xtop.x23.out)`)

tells the Virtuoso UltraSim simulator to probe the power of port out of instance xtop.x23, excluding all other lower hierarchical subcircuit ports.

The next example

.probe tran power=par(`v(xtop.x23.out) * x(xtop.x23.out)`)

tells the simulator to probe the power of port out of instance xtop.x23 and all instances below it.

The next example

.probe tran power=par(`v(1) * i1(r1)`)

tells the simulator to probe the power on element r1 in the circuit.

Node Activity Analysis

Spectre Syntax

usim_nact title node=[node1 node2...] <limit=value> <start=time> <stop=time> <type=max_vo|avg_vo|...> <sort=inc|dec> <param=[max_vo ...] <swingvth=value>

SPICE Syntax

.usim_nact title node=[node1 node2 ...] <limit=value> <start=time> <stop=time> <type=max_vo|avg_vo|...> <sort=inc|dec> <param=[max_vo ...] <swingvth=value>

Description

This command sets up the node activity analysis for the specified nodes. The analysis reports the following parameters for each node:

ParagraphBullet
Maximum and average voltage overshoot (VO)
ParagraphBullet
Maximum and average voltage undershoot (VU)
ParagraphBullet
Maximum, average, and minimum rise times
ParagraphBullet
Maximum, average, and minimum fall times
ParagraphBullet
Signal probability of being high and low
ParagraphBullet
Capacitance
ParagraphBullet
Number of toggles
ParagraphBullet
Full-swing or non-full-swing status

A time window can be specified for the analysis performed. If a wildcard (*) is used in the node names, the number of nodes for which data is printed can be limited using the limit keyword. For more information about wildcards, see "Wildcard Rules".

The output data is printed to a file with the extension .nact. For example, if the name of the input netlist file is circuit.sp, then the output file is named circuit.nact. For multiple node activity analysis commands, all activity reports are saved in the .nact file in the same order as the commands were issued.

The number of nodes for which data is printed in the output file can be limited. This is to restrict the size of the output file if the circuit is large. If the limit is not specified, then data for all the nodes is printed to the file.

The nodes can be sorted before being printed to the file. Each of the column names in the output file can be treated as a sort variable. That is, it can be used for sorting, and only one column can be used for sorting. The sorting order, ascending or descending, can also be specified. By default, the nodes are sorted in increasing order of their names (that is, in alphabetical order). If a sort variable is specified, then it is used for sorting. For example, if type=max_vo sort=inc is specified in the command card, the nodes are sorted in increasing order of their maximum VO value. If many nodes have the exact same maximum VO, then they are sorted according to the default sorting criterion, by increasing order of their names.

By default, the command reports all parameters for each node. The number of reported parameters can be limited using the param statement.

Arguments

 

title

Title of the node activity analysis.

[node1 node2...]

Specifies the nodes that need to be checked; accepts wildcards (*).

limit=N

Limits the number of nodes which are output to the file to n. The n nodes that rank highest, according to the specified criterion, are printed to the file.

start

Start time of the check window. If not specified, the default is 0.

stop

Stop time of the check window. If not specified, the default is the stop time of the simulation.

type

Sets the column name to be sorted.

Note: You can use only one column name for sorting.

sort =(inc | dec)

Sets the sorting order:

inc, sorts in increasing order of the column values.

dec, sorts in decreasing order of the column values.

param

Defines the column names printed in the report. The column names that are not listed are not printed. If the param keyword is not specified, all the column names are printed.

swingvth

Defines the voltage threshold for detecting nodes that are not full-swing. A node is not considered to be full-swing if:

or

The reported column names, specified in the .usim_nact file, are described below:

Column Name Descriptions

 

max_vo

Maximum voltage overshoot (VO) at the node during time window (reference level is the high level defined by .usim_opt vdd=value or the highest available DC voltage level - see log file for detected vdd value)

t_max_vo

Time when maximum VO occurs

avg_vo

Average VO at the node during time window (reference level is vdd)

max_vu

Maximum voltage undershoot (VU) at the node during time window (reference level is 0V)

t_max_vu

Time when maximum VU occurs

avg_vu

Average VU at the node during time window (reference level is 0V)

max_rise

Maximum rise time at the node during time window, measured from vl to vh (use .usim_opt vl/vh=value to define threshold). The default values of vl and vh are 0.3vdd and 0.7vdd, respectively.

Note: Use max_rt in the usim_nact command.

t_max_rise

Time when maximum rise time occurs

min_rise

Minimum rise time at the node during time window, measured from vl to vh (use .usim_opt vl/vh=value to define threshold). The default values of vl and vh are 0.3vdd and 0.7vdd, respectively.

Note: Use min_rt in the usim_nact command.

t_min_rise

Time when minimum rise time occurs

avg_rise

Average rise time at the node during time window, measured from vl to vh (use .usim_opt vl/vh=value to define threshold). The default values of vl and vh are 0.3vdd and 0.7vdd, respectively.

Note: Use avg_rt in the usim_nact command.

max_fall

Maximum fall time at the node during time window, measured from vh to vl (use .usim_opt vl/vh=value to define threshold). The default values of vl and vh are 0.3vdd and 0.7vdd, respectively.

Note: Use max_ft in the usim_nact command.

t_max_fall

Time when maximum fall time occurs

min_fall

Minimum fall time at the node during time window, measured from vh to vl (use .usim_opt vl/vh=value to define threshold). The default values of vl and vh are 0.3vdd and 0.7vdd, respectively.

Note: Use min_ft in the usim_nact command.

t_min_fall

Time when minimum fall time occurs

avg_fall

Average fall time at the node during time window, measured from vh to vl (use .usim_opt vl/vh=value to define threshold). The default values of vl and vh are 0.3vdd and 0.7vdd, respectively.

Note: Use avg_ft in the usim_nact command.

probe_h

Percentage of transient simulation time node was in logic 1 state (above vh)

probe_l

Percentage of transient simulation time node was in logic 0 state (below vl)

cap

Total average node capacitance including device capacitances

toggle

Number of times node toggled from low to high or high to low (high level defined by vh and low level defined by vl)

half_swing

Indicates whether a node is full-swing. A value of 1 indicates a non-full-swing node, and a value of 0 indicates a full-swing node.

Note: Ultrasim only reports the capacitance of a node that is not connected to a voltage source or ground. To measure the capacitance of these nodes, you can insert a resistor between the node and the voltage source or ground before invoking the check. The resistor should be removed for normal simulation.

Examples

Spectre Syntax:

usim_nact example limit=10 type=max_vo sort=inc

SPICE Syntax:

.usim_nact example limit=10 type=max_vo sort=inc

tells the Virtuoso UltraSim simulator to display the top 10 nodes which have the highest VO.

VO is the difference between the node and supply voltage, when the node voltage is greater than the supply voltage. If the node voltage is less than the supply voltage, VO is assumed to be 0.

VU is defined as the difference between the ground and node voltage. If the node voltage is higher than the ground level, VU is assumed to be 0.

Spectre Syntax:

usim_nact example1 type=cap sort=dec param=[cap toggle max_rt]

SPICE Syntax:

.usim_nact example1 type=cap sort=dec param=[cap toggle max_rt]

tells the simulator to create a report with all nodes ordered after their node capacitance and prints the node capacitance, maximum rise time, time at which maximum rise time appears, and number of toggles.

Spectre Syntax:

usim_nact check_swing node=[out1 out2 in] param=[toggle half_swing] swingvth=0.1 start=10ns stop=40ns

SPICE Syntax:

.usim_nact check_swing node=[out1 out2 in] param=[toggle half_swing] swingvth=0.1 start=10ns stop=40ns

tells the simulator to check whether the three nodes out1, out2 and, in are full-swing based on the specified swing threshold value (swingvth=0.1), and prints the half_swing flag together with the number of toggles in the report file.

Node Glitch Analysis

Spectre Syntax

usim_nact title analysis=glitch node=[node1 node2...] <vurelth=value> <vuabsth=value> <vurelrecth=value> <vuabsrecth=value> <vorelth=value> <voabsth=value> <vorelrecth=value> <voabsrecth=value> <type=max_vo|avg_vo|max_vu|avg_vu> <sort=inc|dec> <start=time> <stop=time> <limit=value> <numlevel=value>

SPICE Syntax

.usim_nact title analysis=glitch node=[node1 node2...] <vurelth=value> <vuabsth=value> <vurelrecth=value> <vuabsrecth=value> <vorelth=value> <voabsth=value> <vorelrecth=value> <voabsrecth=value> <type=max_vo|avg_vo|max_vu|avg_vu> <sort=inc|dec> <start=time> <stop=time> <limit=value> <numlevel=value>

Description

This command sets up the node glitch analysis for the specified nodes. Node glitch analysis is a post-processing feature, which detects glitches in reference to static voltage levels of a signal.

Node glitch analysis is performed as follows:

1.
Static voltage levels (where the voltage level is constant) of all signals defined as levels are determined.
2.
All static levels below or equal to 0.5V are considered as static low level.
3.
All static levels above 0.5V are considered as static high level.
4.
Glitches are detected in reference to the static voltage levels. UltraSim detects overshoot glitches in reference to static low level and undershoot glitches in reference to static high level.


The report contains one line for all glitches occurring during one static level. If one signal has multiple static levels and each static level contains glitches, one line is reported for each static level. The following parameters are reported for the glitches of each static voltage level:

ParagraphBullet
avg: Specifies the average glitch voltage level, that is, the average of maximum value of all glitches within one static level.
ParagraphBullet
max: Specifies the maximum glitch voltage level, that is, the voltage level of the maximum glitch within the static level.
ParagraphBullet
t_max: Specifies the time of the maximum glitch.
ParagraphBullet
t_recovery: Specifies the time taken by the signal to recover from the glitch.
ParagraphBullet
staticVal: Specifies the static voltage level.
ParagraphBullet
Vpp: Specifies the high-level voltage used to calculate glitch threshold based on relative tolerances.
ParagraphBullet
start: Specifies the start time of the static voltage level.
ParagraphBullet
end: Specifies the end time of the static voltage level.

The report can be sorted based on overshoot glitches, undershoot glitches, average glitch voltage level, and maximum glitch voltage level. In addition, the values can be arranged in increasing or decreasing order.

Overshoot glitches can be identified in the report by the reported static low level (below/equal to 0.5V). Undershoot glitches can be identified in the report by the reported static high level.

Arguments

 

title

Title of the node glitch analysis.

[node1 node2...]

Specifies the nodes that need to be checked; accepts wildcards (*).

vurelth

Specifies the relative tolerance for undershoot glitch detection.

Default: 0.1

vuabsth

Specifies the absolute tolerance for undershoot glitch detection.

Default: 0.5V

vurelrecth

Specifies the relative tolerance for undershoot glitch recovery.

Default: 0.1

vuabsrecth

Specifies the absolute tolerance for undershoot glitch recovery.

Default: 0.5V

vorelth

Specifies the relative tolerance for overshoot glitch detection.

Default: 0.1

voabsth

Specifies the absolute tolerance for overshoot glitch detection.

Default: 0.5V

vorelrecth

Specifies the relative tolerance for overshoot glitch recovery.

Default: 0.1

voabsrecth

Specifies the absolute tolerance for overshoot glitch recovery.

Default: 0.5V

type

Specifies the criteria of sorting, which could be one of the following:

*
max_vo: Sorts the results based on maximum overshoot or undershoot value.
*
avg_vo: Sorts the results based on average overshoot or undershoot glitch value.
*
max_vu: Sorts the results based on maximum overshoot or undershoot value.
*
avg_vu: Sorts the results based on average overshoot or undershoot glitch value.

Note: The report does not differentiate between overshoot and undershoot glitches. Therefore, you will see the same sorting results when you use max_vo or max_vu. Similarly, you will see the same sorting results when you use avg_vo or avg_vu.

sort =(inc | dec)

Sets the order for sorting:

inc: Sorts in increasing order of the column values.

dec: Sorts in decreasing order of the column values.

Note: It is recommended that you use the type and sort parameters together. type=max_vo is considered as default while sorting.

start

Specifies the start time of the check window.

Default: 0

stop

Specifies the stop time of the check window. If not specified, the default is the stop time of the simulation.

limit

Limits the number of nodes, which are output to the file. When this option is specified, the software prints the glitch information for only the specified number of nodes. The nodes that rank higher based on the specified criteria are printed first.

Default: unlimited

numlevel

Limits the number of static levels per signal. When this option is specified, the software prints the glitch information for only the specified number of static levels per signal.

Default: 5

Examples

Spectre Syntax:

usim_nact glitch analysis=glitch type=max_vo sort=inc node=[ vdd1 vdd2 vss1 vss2 out1 out2 ] vurelth=0.1 vuabsth=0.25 vurelrecth=0.02 vuabsrecth=0.05 vorelth=0.1 voabsth=0.25 vorelrecth=0.02 voabsrecth=0.05

SPICE Syntax:

.usim_nact glitch analysis=glitch type=max_vo sort=inc node=[ vdd1 vdd2 vss1 vss2 out1 out2 ] vurelth=0.1 vuabsth=0.25 vurelrecth=0.02 vuabsrecth=0.05 vorelth=0.1 voabsth=0.25 vorelrecth=0.02 voabsrecth=0.05

tells the Virtuoso UltraSim simulator to perform a glitch analysis on the nodes vdd1, vdd2, vss1, vss2, out1, and out2 using the defined threshold values for glitch detection, and recovery. The report is sorted based on the maximum overshoot glitches (in increasing order).

Power Analysis

Spectre Syntax

usim_pa title subckt inst=[inst1 inst2 ...] port=[porta portb ...] <depth=level>
<sort=max|avg|rms> <subckt_limit=n1> <power=[on|off]> <time_window=[start1
stop1 start2 stop2 ...]> <fast_mode=0|1>

SPICE Syntax

.usim_pa title subckt inst=[inst1 inst2 ...] port=[porta portb ...] <depth=level>
<sort=max|avg|rms> <subckt_limit=n1> <power=[on|off]> <time_window=[start1
stop1 start2 stop2 ...]> <fast_mode=0|1>

Description

This command is used to set up a power analysis on specified subcircuits. It reports the average, maximum, and RMS current at the ports of subcircuits, child subcircuits, and grandchild subcircuits for a specified level of hierarchy. Included in the text report is the time point at which the maximum value is reached. If there are more than two time points with the same maximum value, the first occurrence is reported.

Optionally, the command can be used to report the average, maximum, and RMS power consumed by the subcircuit and its subcircuits within the specified hierarchical level.

Note: The total (generated and consumed) power at the top level is not reported in the power analysis.

The current and power information is also output to a text file. The file name convention is netlistname.pa and the file contains three sections:

ParagraphBullet
Current information for the ports (first section)
ParagraphBullet
Power information for the ports (second section)
ParagraphBullet
Subcircuit information (third section)

If the circuit is simulated more than once (for example, when using alter or sweep), the file name convention changes to netlistname.runnumber.pa.

Note: The report can be imported into Microsoft® Excel for additional analyses.

Arguments

 

inst

List of instances to be checked. If not specified, all subcircuits at the hierarchical level are analyzed. Wild card is supported.

port

Specifies the subcircuit port to be checked (port names in the subcircuit definition, not the ports in the instances). The Virtuoso UltraSim simulator reports the current (power optional) information for specified ports.

If the specified ports are ports for the child subcircuit, the simulator also reports the port information at the child subcircuit level. If the ports are also ports for the grandchild subcircuit, the simulator reports the information at the grandchild subcircuit level. This reporting structure continues until the specified hierarchical level is reached.

If not specified, all ports at the specified hierarchical level are automatically reported.

Note: When a port is specified, the Virtuoso UltraSim simulator does not report the subcircuit power consumption (that is, the Subckt Power Summary section is omitted from the output file).

depth

The hierarchical depth of the subcircuits to be checked (default is 1).

sort=max|avg|rms

Sorts the report by the specified value, in decreasing order. The values include:

*
avg: The average power for specified time intervals
*
max: The maximum power for specified time intervals
*
rms: The RMS power for specified time intervals.

If there is more than one sorting criterion, the first one is used and the second one ignored. For example:

If sort=avg in the first usim_pa subcircuit and sort=max in the second usim_pa subcircuit, only sort=avg is used.

subckt_limit=n1

Limits the number of subcircuits to be reported (default is infinity).

power

Turns specified power value on or off (default is off).

The values include:

*
power=off: Only current information is reported
*
power=on: Current and power information is reported

time_window=[start1 stop1 start2 stop2 …]

Time window for check. start and stop must be paired.

If start and stop are not specified, start defaults to 0s and stop defaults to the end of the simulation.

fast_mode

Specifies whether or not to check MOS gates.

The values include:

fast_mode=0: Checks all detected ports (default)

fast_mode=1: Skips ports that are MOS gates

pa_elemlen

The default length for subcircuit instance names is 20 characters. Use the pa_elemlen option to change the name length. For example, usim_opt pa_elemlen=64 sets the maximum name length to 64 characters.

Example 1

The report format is determined by the sorting criteria. For example, block x1 has two ports, A and B (in/out in subcircuit definition), and two lower-level blocks x1.x1 and x1.x2 (see Figure 8-1 ).

Sample netlist file:

x1 A B sub_x1

.subckt sub_x1 in out

   .

   .

   .

x1 in1 in2 out sub_x1_x1
x2 in out sub_x1_x2
.subckt sub_x1_x1 in1 in2 out

      .

      .

      .

.ends sub_x1_x1
.subckt sub_x1_x2 in out

      .

      .

      .

x3 in1 in2 out sub_x1_x2_x3
.subckt sub_x1_x2_x3 a b c

         .

         .

         .

.ends sub_x1_x2_x3
.ends sub_x1_x2

   .

   .

   .

.ends sub_x1

Figure 8-1  Power Analysis Report Format Example


The lower-level blocks and ports are arranged in the following order:

ParagraphBullet
Block x1.x1 has three ports: in1, in2, and out (in1, in2, and out in subcircuit definition)
ParagraphBullet
Block x1.x2 has two ports: xin and xout (in and out in subcircuit definition)
ParagraphBullet
Block x1.x2 contains block x1.x2.x3
ParagraphBullet
Block x1.x2.x3 has three ports: in1, in2, and out (a, b, and c in subcircuit definition)

Example 2

Note: See Figure 8-1 for the circuit hierarchical structure used in this example.

Spectre Syntax:

usim_pa example2 subckt inst=[x1] depth=3 sort=max power=off time_window=[10n 50n]

SPICE Syntax:

.usim_pa example2 subckt inst=[x1] depth=3 sort=max power=off time_window=[10n 50n]

The first section of the output file includes the following information:

Time: from 10n to 50n

*** Port Current Summary *******************

 

 

Max(A)

Avg (A)

RMS(A)

Max Time

x1.B

600e-3

600e-3

500e-3

15e-9

x1.x2.x3.b

550e-3

300e-3

300e-3

12e-9

x1.A

540e-3

300e-3

600e-3

15e-9

x1.x1.in1

530e-3

400e-3

500e-3

15e-9

x1.x1.out

520e-3

300e-3

100e-3

10e-9

x1.x2.in

500e-3

300e-3

300e-3

25e-9

x1.x1.in2

500e-3

200e-3

1e-3

30e-9

x1.x2.out

400e-3

400e-3

200e-3

50e-9

x1.x2.x3.c

350e-3

500e-3

200e-3

30e-9

x1.x2.x3.a

200e-3

100e-3

100e-3

20e-9

Example 3

Note: See Figure 8-1 for the circuit hierarchical structure used in this example.

usim_pa example3 subckt inst=[x1] depth=3 sort=max power=on time_window=[10n 50n]

The first section of the output file netlistname.pa is the same as in Example 2. The second and third sections of the file include the following information:

*** Port Power Summary **********

 

 

Max(w)

Avg (w)

RMS (w)

Max time

x1.B

40e-3

50e-3

60e-3

25e-9

x1.A

35e-3

30e-3

20e-3

30e-9

x1.x1.in2

32e-3

40e-3

5e-3

40e-9

x1.x2.x3.b

30e-3

10e-3

7e-3

45e-9

x1.x1.in1

30e-3

20e-3

10e-3

30e-9

x1.x1.out

29e-3

4e-3

2e-3

35e-9

x1.x2.out

23e-3

20e-3

30e-3

40e-9

x1.x2.in

10e-3

20e-3

40e-3

50e-9

x1.x2.x3.a

6e-3

15e-3

8e-3

13e-9

x1.x2.x3.c

4e-3

3e-3

6e-3

16e-9

*** Subckt Power Summary ******

 

 

Max(w)

Avg (w)

RMS (w)

Max time

x1

60e-3

50e-3

0e-3

10e-9

x1.x1

30e-3

30e-3

10e-3

20e-9

x1.x2

30e-3

20e-3

10e-3

30e-9

x1.x2.x3

10e-3

20e-3

10e-3

35e-9

Example 4

Note: See Figure 8-1 for the circuit hierarchical structure used in this example.

usim_pa example4 subckt inst=[x1.x2] port=[in] depth=1 sort=max power=on
time_window=[10n 50n]

Since the port is specified, the Virtuoso UltraSim simulator does not report the power consumption for the subcircuit (output file only has two sections: Port Current Summary and Port Power Summary).

Time: from 10n to 50n

*** Port Current Summary *******************

 

 

Max(A)

Avg (A)

RMS(A)

Max Time

x1.x2.in

500e-3

300e-3

300e-3

25e-9

*** Port Power Summary ******

 

 

Max(w)

Avg (w)

RMS (w)

Max time

x1.x2.in

30e-3

20e-3

10e-3

30e-9

Example 5

Note: See Figure 8-1 for the circuit hierarchical structure used in this example.

usim_pa example5 subckt inst=[x*] port=[in*] depth=3 sort=avg power=off
time_window=[1n 2n]

tells the Virtuoso UltraSim simulator to print out the current consumption for all ports that have names starting with in and for all subcircuits that have names starting with x. The hierarchical depth is limited to 3, the report is sorted by the avg value, and the time window is from 1 ns to 2 ns.

Example 6

Note: See Figure 8-1 for the circuit hierarchical structure used in this example.

usim_pa example6 subckt depth=3 sort=max power=on time_window=[100p 2n]

tells the simulator to print out current and power consumption for all ports, and power consumption for all subcircuits within a hierarchical depth of 3 for time window 100 ps to 2 ns. The report is sorted by the max value.

Wasted and Capacitive Current Analysis

Spectre Syntax

usim_pa title currents inst=[inst1 inst2 ...] [static=on|off] time_window=[start1
stop1 start2 stop2 ...]

SPICE Syntax

.usim_pa title currents inst=[inst1 inst2 ...] [static=on|off] time_window=[start1
stop1 start2 stop2 ...]

Description

Capacitive current is the current charging or discharging of a capacitance node. Wasted current is the current flowing between two voltage sources that does not contribute to any switching functions. There are two types of wasted current: Static and dynamic. Static wasted current is the portion of wasted current flowing in circuits that are not switching. Dynamic wasted current is the portion of wasted current flowing in circuits which are actively switching.

The usim_pa currents command is used to analyze the capacitive, and static and dynamic wasted currents for specified circuits. The analysis results report the RMS and average values of currents consumed by the subcircuit, and its child subcircuits within the specified hierarchical level. The current information is output to a netlistname.pa text file.

The wasted and capacitive current check applies only to digital designs including SRAMs and other memories. This feature does not apply to analog designs.

Arguments

 

title

Title for the current analysis.

inst1, inst2

List of subcircuit instances to be analyzed. If instances are not specified, the entire circuit is analyzed.

Note: Wildcards (*) are supported.

static=on|off

Static and dynamic wasted current is reported if static=on (default is static=off and only the total wasted current is reported).

time_window

The time period for checking

Example 1

In the following Spectre syntax example

usim_pa example1 currents inst=x1 static=on start=100n stop=1000n

the Virtuoso UltraSim simulator reports the capacitive current, as well as the static and dynamic wasted currents for instance x1 over the simulation window of time=100 ns to time=1000 ns.

The following report is generated:

.TITLE 'This file is :./mult16_vec.pa'

Time: from 100n to 1000n

*** Subckt Current Summary ***

 

x1

 

Average capacitive current:

6.181e+03 uA

RMS capacitive current:

2.632e+04 uA

Average wasted current:

1.861e+02 uA

RMS wasted current:

3.077e+03 uA

Average static wasted current:

2.446e+00 uA

RMS static wasted current:

2.446e+00 uA

Average dynamic wasted current:

1.887e+02 uA

Example 2

In the following SPICE syntax example

.usim_pa example2 currents static=on

the simulator reports the capacitive current, and static and dynamic wasted currents of the whole circuit over the entire simulation window.

Power Checking

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
Hot Spot Node Current Check
ParagraphBullet
Floating Gate Induced Leakage Current Check
ParagraphBullet
Excessive Rise and Fall Time Check (EXRF)

Over Current (Excessive Current) Check

Spectre Syntax

pcheck title exi elem=[elem1 <elem2>...] <ith=current_threshold>
<tth=time_duration> <time_window=[start1 stop1 start2 stop2 ...]>
<preserve=none|all>

SPICE Syntax

.pcheck title exi elem=[elem1 <elem2>...] <ith=current_threshold>
<tth=time_duration> <time_window=[start1 stop1 start2 stop2 ...]>
<preserve=none|all>

Description

Based on the specified element list, current threshold, over current duration time, and checking time windows, the Virtuoso UltraSim simulator reports in a netlistName.pcheck file which elements over a specific time window have current over the threshold for a time period equal to or greater than the specified duration. If no time window is specified, the entire simulation period is used.

 
ParagraphBullet
To limit the number of error messages that will be printed in the Over Current (Excessive Current) Check report, use the pcheck_limit option.

Arguments

 

title

User defined title name for check.

exi

Keyword for over current check.

elem1 <elem2…>

List of element instance names to be checked.

ith

Defines current threshold (default is 10 uA).

tth

Defines duration time (default is 5 ns).

time_window

Defines the checking window. Default is the entire simulation time period.

preserve=none|all

Defines whether all devices are preserved.

*
none preserves active devices only (Default)
*
all preserves all devices or nodes, including passive devices

Examples

Spectre Syntax:

pcheck check1 exi elem=[XIO.M12 XIO.M32] ith=5e-3 tth=10n

pcheck check2 exi elem=[X1.X132.*] ith=1e-4 tth=10n time_window=[0 1u 3u 10u]

pcheck check3 exi elem=[*] ith=2e-3 tth=100n

SPICE Syntax:

.pcheck check1 exi elem=[XIO.M12 XIO.M32] ith=5e-3 tth=10n

.pcheck check2 exi elem=[X1.X132.*] ith=1e-4 tth=10n time_window=[0 1u 3u 10u]

.pcheck check3 exi elem=[*] ith=2e-3 tth=100n

Note: The element instance list can only contain element names or be enclosed by I( ), single quotation marks ` ', or double quotation marks " " [if only a wildcard * is used, it requires I( ) or quotation marks]. For more information about wildcards, see "Wildcard Rules".

Over Voltage (Excessive Node Voltage) Check

Spectre Syntax

pcheck title exv node=[node1 <node2...>] <vmin=value> <vmax=value>
<tth=time_duration> <time_window=[start1 stop1 start2 stop2 ...]>
<preserve=none|all> <option=0|1>

SPICE Syntax

.pcheck title exv node=[node1 <node2...>] <vmin=value> <vmax=value>
<tth=time_duration> <time_window=[start1 stop1 start2 stop2 ...]>
<preserve=none|all> <option=0|1>

Description

Based on the specified node list, voltage thresholds, over voltage duration time, and checking windows, the Virtuoso UltraSim simulator reports in a netlistName.pcheck file which nodes over a specific time window have voltage over, below, or within the threshold(s) for a time period equal to or greater than the specified duration. If no time window is specified, the entire simulation period is used.

 
ParagraphBullet
To limit the number of error messages that will be printed in the Over Voltage (Excessive Node Voltage) Check report, use the pcheck_limit option.

Arguments

 

title

User defined title name for check.

exv

Keyword for over voltage check.

node1 <node2…>

Names of nodes to be checked (wildcards are supported).

vmin=value

Defines minimum voltage level. If not defined, vmin checking is not performed by simulator.

vmax=value

Defines maximum voltage level. If not defined, vmax checking is not performed by simulator.

tth=time_duration

Defines duration time (default is 5 ns).

time_window

Defines the checking window. Default is the entire simulation time period.

preserve=none|all

Defines whether all devices are preserved.

*
none preserves nodes after RC reduction (Default)
*
all preserves all nodes, including nodes removed during RC reduction

option=0|1

Defines which voltage threshold is used to report the nodes.

ParagraphBullet
0 reports any of the specified nodes with voltages above vmax or below vmin for a duration time longer than tth (default)
ParagraphBullet
1 reports any of the specified nodes if its voltage falls between vmin and vmax for a duration time longer than tth

Examples

Spectre Syntax:

pcheck exv1 exv node=[*] vmax=0.8 tth=1n

pcheck exv2 exv node=[*] vmin=0

pcheck exv3 exv node=[*] vmin=0 vmax=0.8 option=0 tth=1n

pcheck exv4 exv node=[*] vmin=0.35 vmax=0.75 option=1 tth=1n

pcheck exv5 exv node=[*] vmin=0.35 vmax=0.75 option=1 tth=1n preserve=all

pcheck exv6 exv node=[*] vmin=0.35 vmax=0.75 option=1 tth=1n preserve=all
time_window=[8n 12n 18n 22n]

SPICE Syntax:

.pcheck exv1 exv node=[*] vmax=0.8 tth=1n

.pcheck exv2 exv node=[*] vmin=0

.pcheck exv3 exv node=[*] vmin=0 vmax=0.8 option=0 tth=1n

.pcheck exv4 exv node=[*] vmin=0.35 vmax=0.75 option=1 tth=1n

.pcheck exv5 exv node=[*] vmin=0.35 vmax=0.75 option=1 tth=1n preserve=all

.pcheck exv6 exv node=[*] vmin=0.35 vmax=0.75 option=1 tth=1n preserve=all
time_window=[8n 12n 18n 22n]

DC Path Leakage Current Check

Spectre Syntax

pcheck title dcpath <ith=threshold_current> <tth=time_duration> <node=[node1
node2...]> <inst=[inst1 inst2]> <xinst=[xinst1 xinst2]>
<period=period_time|delay=delay_time> <time_window=[start1 stop1 start2
stop2 ...] [btwvnode=0|1]<file="filename">
pcheck title dcpath <ith=threshold_current> <tth=time_duration> <node=[node1,
node2...]> <inst=[inst1 inst2]> <xinst=[xinst1 xinst2]> <at=[time1 time2...]> [btwvnode=0|1]<file="filename">

SPICE Syntax

.pcheck title dcpath <ith=threshold_current> <tth=time_duration> <node=[node1
node2...]> <inst=[inst1 inst2]> <xinst=[xinst1 xinst2]>
<period=period_time|delay=delay_time> <time_window=[start1 stop1 start2
stop2 ...]> [btwvnode=0|1]<file="filename">
.pcheck title dcpath <ith=threshold_current> <tth=time_duration> <node=[node1,
node2...]> <inst=[inst1 inst2]> <xinst=[xinst1 xinst2]> <at=[time1 time2...]> [btwvnode=0|1]<file="filename">

Description

The Virtuoso UltraSim simulator reports the DC conducting paths between specified voltage source nodes. All reported DC conducting paths are written into a file with a .pcheck extension. To qualify as a conducting path, each segment in the path must, at a minimum, carry the threshold current specified by the parameter ith.

A voltage source node is a node which is directly connected to a voltage source (includes DC, PWL, and PULSE voltage sources). The ground node is also a voltage source node. Nodes connected to current sources, HDL/Verilog-A/C models, and drivers defined in VEC or VCD files are not qualified. If nodes are not specified, the simulator checks for DC paths between all voltage sources. If only one node is specified, the DC path between the node and ground is reported. If a time point, period, or time frame is not specified, the entire simulation period is checked. Currents and voltages reported in the DC path report correspond to values at the beginning of the measured time window.

 
ParagraphBullet
To limit the number of error messages that will be printed in the DC Path Leakage Current Check report, use the pcheck_limit option.

Arguments

 

title

User defined title name for check.

dcpath

Keyword for DC path check.

ith

Threshold current (default value is 50 uA).

tth

Duration time (default is 5 ns).

nodelist

List of voltage source nodes to be checked.

inst

Specifies subcircuit (instance) to be checked by simulator. If not specified, the entire circuit is checked. Wildcard characters can be used with subckt.

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

xinst

Specifies subcircuit (instance) to be excluded from check. Wildcard characters can be used with this argument.

period

Specifies that the DC current path is checked for every period, starting from the beginning of each time frame as defined by start and stop.

delay

Specifies that the DC current path is checked at each time defined by t+delay_time. t designates the time an input stimulus change occurs. If both period and delay are not specified, the DC path is checked in the time frame defined by start and stop.

Note: period and delay cannot be used simultaneously.

at

Specifies that the DC current path is checked at the time defined by at=time1.

time_window

Specifies time frame for checking (default is full transient simulation).

btwvnode

By default, (btwvnode=1) only leakage checks between the nodes driven by voltage sources are performed. With btwvnode=0, the leakage check can be performed between non-vsrc nodes, if they are specified in the node statement.

file=filename

Specifies the user-defined output file. If the file argument is not specified, the DC conducting paths are reported in the netlistname.pcheck file.

Examples

In the following Spectre example

pcheck dc1 dcpath ith=1e-6 tth=10n node=[vdd gnd] delay=5n time_window=[10n 210n]

tells the Virtuoso UltraSim simulator to check the DC current path between vdd and gnd after any input stimulus change, with a delay of 5 ns. The DC current path is checked during the 10 ns and 210 ns time frame. The DC current path is reported in the netlist.pcheck file if the DC current path exceeds 1 uA and lasts longer than 10 ns.

In the following SPICE example

.pcheck dc2 dcpath ith=1e-6 node=[vddh vddl] period=10n time_window=[10n 210n]

tells the simulator to check the DC current path between vddh and vddl every 10 ns, starting at 10 ns and stopping at 210 ns. The DC current path is reported if the DC current path exceeds 1 uA.

In the following Spectre example

pcheck dc3 dcpath node=[vcc vss] at=[130n 150n]

tells the simulator to check the DC current path between vcc and vss at 130 ns and 150 ns. The DC current path is reported if the DC current path exceeds the default value of 50 uA when checked.

The next example

pcheck dc4 dcpath inst=[IDIGITAL] xinst=[IDIGIAL.IOSC] ith=10u tth=10n

tells the simulator to check the DC current path between any two voltage sources over the entire simulation time. The DC current path is reported if the DC current path exceeds 10 uA and last longer than 10 ns. Only the IDIGIAL block is checked (the IOSC block inside IDIGIAL is excluded).

High Impedance Node Check

Spectre Syntax

pcheck title zstate node=[node1 <node2...>] <fanout=0|1|2> <xsubckt=[xsubckt1
xsubckt2 ...]> <psubckt=[psubckt1 psubckt2 ...]> <subckt=[subckt1 subckt2 ...] <inst=[inst1 inst2...]> <xinst=inst1 inst2 ...]> <ztime=ztime> <time_window=[start1 stop1 start2 stop2 ...]> <file="filename">

SPICE Syntax

.pcheck title zstate node=[node1 <node2...>] <fanout=0|1|2> <xsubckt=[xsubckt1
xsubckt2 ...]> <psubckt=[psubckt1 psubckt2 ...]> <subckt=[subckt1 subckt2 ...] <inst=[inst1 inst2...]> <xinst=inst1 inst2 ...]> <ztime=ztime> <time_window=[start1 stop1 start2 stop2 ...]> <file="filename">

Description

Based on the specified node name list, high-z duration time, and checking windows, the Virtuoso UltraSim simulator reports in a netlistName.pcheck file which nodes over the time windows were in high-z state for a time period equal to or greater than the specified duration. If no window is specified, the whole simulation period is used.

Along with reporting the node name, the high-z state check reports the times when the high z-state begins and ends, as well as the time error (time error is defined as the time the high-z state exceeds the specified time duration).

A node is considered to be in high-z state if there is only a high impedance or no conductance path from the node to a voltage source or ground. The following conditions in the path can produce a high-z state:

ParagraphBullet
MOSFET is switched off (Vgs<Vth and Ids < Ith)
Note: See the Notes section for the definition of lth.
ParagraphBullet
JFET is switched off (Vgs<Vpinchoff)
ParagraphBullet
Resistor bigger than Rth
Note: See the Notes section for the definition of Rth.
ParagraphBullet
BJT considered off if Vbe<=0.4 and Ic<=50 nA
ParagraphBullet
Diode considered to be off for V<0.6 V
ParagraphBullet
Verilog-A module with no channel connection (capacitor, mutual inductor, and current source)

There is an alternative rule for defining a MOSFET to be not conducting. The simulator option mos_on_method defines which rule is used, as shown below.

.usim_opt mos_on_method=0|1

 

Value

Description

0

MOSFET is not conducting when Vgs<Vth

1

MOSFET is not conducting when Ids<pck_mos_ids and gds<pck_mos_gds

You can specify the ids and gds thresholds using the following options:

.usim_opt pck_mos_ids=value //default value is 100nA

.usim_opt pck_mos_gds=value //default value is 1e-5

 
ParagraphBullet
To limit the number of error messages that will be printed in the High Impedance Node Check report, use the pcheck_limit option.

Arguments

 

title

User defined title name for check.

zstate

Keyword for high-impedance node check.

node1 <node2…>

List of node names to be checked.

fanout=0|1|2

Optional connection option. If fanout=0, all listed nodes are checked. If fanout=1, only those nodes connected to the metal oxide semiconductor field-effect transistor (MOSFET) gate are checked. If fanout=2, only those nodes connected to the bulk or body of the MOSFET are checked (default is 0).

xsubckt

Defines subcircuit that are excluded from the check when `*' is used in the node name list (wildcard * is supported).

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

psubckt

Checks high-z state for the I/O ports of the specified subcircuit. This is applied only when `*' is specified.

subckt

Defines the subcircuits that should be included in the check.

inst

Defines the instances that need to be checked

xinst

Defines the instances that should be excluded from the check when wildcards are used in the node name list.

ztime

Defines duration time in high-z state (default is 5 ns).

time_window

Defines the time period for checking. The default is the entire transient period.

file=filename

Specifies the user-defined output file. If the file argument is not specified, the design checks are reported in the netlistname.pcheck file.

Examples

Spectre Syntax:

pcheck z_check1 zstate node=[xram.*] fanout=1 ztime=50n

pcheck z_check2 zstate node=[*] ztime=1.0e-8 time_window=[1u 9u]
xsubckt=[inv1* ?and]

SPICE Syntax:

.pcheck z_check1 zstate node=[xram.*] fanout=1 ztime=50n

.pcheck z_check2 zstate node=[*] ztime=1.0e-8 time_window=[1u 9u]
xsubckt=[inv1* ?and]

Notes

ParagraphBullet
The node instance list can only contain node names and must be enclosed by v( ), single quotation marks ` ', or double quotation marks " " [if only a wildcard * is used, it requires v( ) or quotation marks]. For more information about wildcards, see "Wildcard Rules".
ParagraphBullet
When a wildcard is used, the expanded node instance list does not include nodes located within RC networks. You should always review the Virtuoso UltraSim simulator log file for all reported floating nodes (use the warning_limit_float option to print floating nodes).
ParagraphBullet
The resistance threshold value Rth can be changed by using the following option:
.usim_opt res_open = value
The default value of Rth is 100 Mohm.

Hot Spot Node Current Check

Spectre Syntax

pcheck title hotspot node=[node1 <node2 ...>] <ratio=ratio> <fanout=0|1|2>
<xsubckt=[xsubckt1 xsubckt2 ...]> <psubckt=[psubckt1 psubckt2 ...]>
<time_window=[start1 stop1 start2 stop2 ...]>

SPICE Syntax

.pcheck title hotspot node=[node1 <node2 ...>] <ratio=ratio> <fanout=0|1|2>
<xsubckt=[xsubckt1 xsubckt2 ...]> <psubckt=[psubckt1 psubckt2 ...]>
<time_window=[start1 stop1 start2 stop2 ...]>

Description

The Virtuoso UltraSim simulator reports the average charging and discharging current statistics for specified nodes during a checking window (the statistics are output to a netlistName.hotspot report). If a checking window is not specified, the entire simulation period is used.

Only the nodes, for which the sum of the charging and discharging average current is larger than the hot spot factor (default is 0.5) multiplied by the sum of the charging and discharging average current of the node with the largest current, are reported.

Arguments

 

title

User-defined title name for check.

hotspot

Keyword for hot spot check.

node1 <node2…>

List of node names to be checked.

ratio

Defines the hot spot factor (0 <= ratio <= 1; default is 0.5).

fanout=0|1|2

Optional connection option. If fanout=0, all listed nodes are checked. If fanout=1, only those nodes connected to the metal oxide semiconductor field-effect transistor (MOSFET) gate are checked. If fanout=2, only those nodes connected to the bulk or body of the MOSFET are checked (default is 0).

xsubckt

Defines subcircuit that are excluded from the check when `*' is used in the node name list.

psubckt

Checks hot spot for I/O ports of specified subcircuit. Only applied when `*' is specified.

time_window

Defines the time period for checking. The default is the entire simulation period.

Examples

In the following Spectre example

pcheck hot_chk1 hotspot node=[xtop.x1.*]

tells the Virtuoso UltraSim simulator to report the average current statistics for all nodes in the xtop.x1 block.

In the following SPICE example

.pcheck hot_chk2 hotspot node=[*] ratio=0.8 time_window=[1u 9u]

tells the simulator to report the average current statistics for all nodes. Since the hot spot factor is 0.8, only the nodes with a sum of charging and discharging current larger than 80% of maximum current are reported.

Notes

ParagraphBullet
The node instance list can only contain node names and must be enclosed by either v(), single quotation marks (`'), or double quotation marks (""). If only a wildcard (*) is used, the node names need to use v() or quotation marks. For more information about wildcards, see "Wildcard Rules".
ParagraphBullet
Nodes connected to voltage or ground sources are excluded from the hot spot node check.
ParagraphBullet
If multiple start and stop pairs are used in one statement, the hot spot node check is performed for each time window. If multiple hot spot statements are included in a netlist file, each statement must have an unique title (nodes in different statements are checked separately).
ParagraphBullet
Internal nodes within RC networks are currently excluded from the hot spot node check.

Sample Output

 

Title

node_name

Icin(uA)

Icout(uA)

from(ns)

to(ns)

hotspot_chk1

vpp

1548.47

1645.73

0

500

hotspot_chk1

x5.n2n1486

1574.65

1284.41

0

500

hotspot_chk1

x5.n2n1422

1484.39

1371.63

0

500

hotspot_chk1

x5.n2n1485

1495.16

1311.18

0

500

hotspot_chk1

x5.n2n1484

1329.68

1306.82

0

500

hotspot_chk1

x4.n1n646

1022.95

1028.15

0

500

hotspot_chk1

x5.n2n1488

1134.72

869.648

0

500

hotspot_chk1

x3.n1n646

903.956

909.934

0

500

hotspot_chk1

x5.nc

842.582

879.417

0

500

hotspot_chk1

Total Current

74885.4

74489.4

0

500

In this sample report output:

ParagraphBullet
Icin is the average charging current flowing into the capacitances connected to the node
ParagraphBullet
Icout is the average discharging current flowing out of the capacitances connected to the node
ParagraphBullet
The checking window duration is listed in the from(ns) and to(ns) columns
ParagraphBullet
The hot spot factor ratio = 0.5
The node with the largest current is vpp, which has a sum of charging and discharging average current of 3194.2 uA. Multiplied by the ratio 0.5, the sum of charging and discharging average current is 1597.1 uA. Based on this ratio, all nodes with a current sum larger than 1597.1 uA are included in the report.
Note: If the hot spot factor ratio is changed to 0.6, the x5.nc and x3.n1n646 are excluded from the report.

Floating Gate Induced Leakage Current Check

Spectre Syntax

pcheck title floatdcpath <ith=threshold_current> <node=[node1, node2...]>
<inst=[inst1 inst2]> <xinst=[xinst1 xinst2]> time_window=[time1 time2...]
period=time5 at=[time6 time7...] [btwvnode=0|1] [detailed_path=0|1] <file="filename">

SPICE Syntax

.pcheck title floatdcpath <ith=threshold_current> <node=[node1, node2...]>
<inst=[inst1 inst2]> <xinst=[xinst1 xinst2]> time_window=[time1 time2...]
period=time5 at=[time6 time7...] [btwvnode=0|1] [detailed_path=0|1] <file="filename">

Description

The Virtuoso UltraSim simulator detects Hi-Z nodes and forces their associated fanout transistors to be turned on. If the operation forms any conducting paths between voltage source nodes through the transistor with leakage current larger than the threshold value, then these paths are reported in a netlistName.pcheck file. To qualify as a conducting path, each segment in the path must carry the threshold current specified by the ith parameter.

Note: The definitions of Hi-Z nodes are described in the High Impedance Node Check section.

A voltage source node is a node which is directly connected to a voltage source (includes DC, PWL, and PULSE voltage sources). The ground node is also a voltage source node. Nodes which are shorted to power supply or ground nodes via a 0V DC voltage source, or a PWL source with min=max=0V value may also be specified as nodes in the floatdcpath statement.

Note: Nodes connected to current sources, HDL/Verilog-A/C models, and drivers defined in VEC or VCD files do not qualify.

If nodes are not specified, the simulator checks for DC paths between all voltage sources. If only one node is specified, the DC path between the node and ground is reported.

Figure 8-2  Floating Gate Induced Leakage Current Check Overview


 
ParagraphBullet
To limit the number of error messages that will be printed in the Floating Gate Induced Leakage Current Check report, use the pcheck_limit option.

Arguments

 

title

User-defined title name for check.

floatdcpath

Keyword for floating gate induced leakage current check.

ith

Threshold current (default value is 10 uA).

node

List of voltage source nodes to be checked. Wildcards are supported.

inst

Specifies subcircuit instance to be checked by simulator. If not specified, the entire circuit is checked. Wildcard characters can be used with the subcircuit.

xinst

Specifies subcircuit instances to be excluded from the check. Wildcard characters can be used with this argument.

time_window

Time window in which checking is performed.

period

Check is performed at every time period, starting at the beginning of time_window (default value is 10 ns or 1% of transient time, whichever time value is longer). Minimum period allowed is 1 ns.

at

Specifies time point for checking (ignored if time_window is specified).

btwvnode

By default (btwvnode=1), only leakage checks between the nodes driven by voltage sources are performed. With btwvnode=0, the leakage check can be performed between non-vsrc nodes, if they are specified in the node statement.

detailed_path

If set to 0 (default), only one (the shortest) path is reported per floating gate. If set to1, all paths per floating gate are reported.

file=filename

Specifies the user-defined output file. If the file argument is not specified, the leakage path checks are reported in the netlistname.pcheck file.

Examples

In the following example

.pcheck dc2 floatdcpath node=[vcc vss] ith=50u at=[130n 150n]

tells the Virtuoso UltraSim simulator to check the DC current path between vcc and vss at 130 ns and 150 ns. The DC current path is reported if the path exceeds 50 uA during the check.

In the next example

.pcheck dc1 floatdcpath time_window=[200n 600n 1200n 1600n] period=[100n]

tells the simulator to check the DC current path between all source nodes at 100 ns intervals between 200 ns and 600ns, and 1200 ns and 1600 ns.

Excessive Rise and Fall Time Check (EXRF)

Spectre Syntax

pcheck title exrf node=[node1 <node2...>] <xsubckt=[xsubckt1 xsubckt2 ...]> <fanout=0|1|2> <rise=rise_time> <fall=fall_time> <utime=u_value> <vlth=logic_low_voltage> <vhth=logic_high_voltage> <time_window=[start1 stop1 start2 stop2 ...]>

SPICE Syntax

.pcheck title exrf node=[node1 <node2...>] <xsubckt=[xsubckt1 xsubckt2 ...]> <fanout=0|1|2> <rise=rise_time> <fall=fall_time> <utime=u_value> <vlth=logic_low_voltage> <vhth=logic_high_voltage> <time_window=[start1 stop1 start2 stop2 ...]>

Description

The Virtuoso UltraSim simulator reports in a netlistName.pcheck file the nodes that have excessive rise or fall time over a specific time period based on the specified list of nodes, logic voltage thresholds, and checking time windows.

If no checking time windows are specified, the entire simulation period is used.

 
ParagraphBullet
To limit the number of error messages that will be printed in the Excessive Rise and Fall Time Check report, use the pcheck_limit option.

Arguments

 

title

User-defined title name for check.

exrf

Keyword for excessive rise/fall time check.

node1 <node2…>

List of node names to be checked.

xsubckt

Specifies the subcircuits that are not to be checked (wildcard characters can be used). When used, all the instances of the specified subcircuit names are excluded from the EXRF check.

Note: When multiple xsubckt arguments are specified, only the last one is honored. As a result, the subcircuit name specified with the last xsubckt argument is excluded from the EXRF check.

fanout=0|1|2

Optional connection option. If fanout=0, all listed nodes are checked. If fanout=1, only those nodes connected to the metal oxide semiconductor field-effect transistor (MOSFET) gate are checked. If fanout=2, only those nodes connected to the bulk or body of the MOSFET are checked (default is 0).

rise

Transition time from logic low voltage to logic high voltage. The default value is 5 ns.

fall

Transition time from logic high voltage to logic low voltage. The default value is 5 ns.

utime

Time duration of the node stays between the logic low and logic high voltage without making a transition. The default value is 5 ns.

vlth

Logic low threshold voltage. The default value os 0.3Vdd.

vhth

Logic low threshold voltage. The default value os 0.7Vdd.

time_window

Defines the time period for checking. The default is the entire transient period.

Example

.pcheck exrf node = [ x1.x2.*] fanout=1 rise=6n fall=4n vlth=0.4 vhth=2.6

+ time_window = [100n 2000n]

This command checks if the signal voltage values at the nodes x1.x2.* have excessive rise and fall times between 100 ns and 2000 ns. A violation is reported in the .pcheck file if the signal rise time exceeds 6 ns, or the signal fall time exceeds 4 ns, or the U-state time exceeds the default value of 5 ns.

Timing Analysis

The Virtuoso UltraSim simulator allows you to perform timing analysis on specific nodes through a set of commands starting with usim_ta. These commands should be directly embedded in the netlist file, or in a separate file that is included in the netlist file using the include command. The timing check errors are reported in the .ta file. If the netlist file is circuit.sp, then the .ta file is named circuit.ta.

Timing check statements can be embedded within a subcircuit definition. In this case, they apply only to the nodes local to the host circuit, and their check titles are appended by the circuit calls from the top level in the circuit hierarchy. Timing check statements also support the parameters depth = value and subckt = name simulation output statements (see "Supported SPICE Format Simulation Output Statements" for more information). Nodes analyzed with usim_ta are automatically saved as waveforms.

For example,

Spectre Syntax:

usim_ta ta_all setup node=n1 edge=rise ref_node=clk ref_edge=rise setup_time=2n
subckt=INV depth=2

SPICE Syntax:

.usim_ta ta_all setup node=n1 edge=rise ref_node=clk ref_edge=rise setup_time=2n
subckt=INV depth=2

tells the Virtuoso UltraSim simulator to report the setup timing errors for all nodes that match n* in the subcircuit INV and one level below in the circuit hierarchy. See the following sections for timing check statements descriptions.

The timing analysis checks supported by the Virtuoso UltraSim simulator include:

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

Hold Check

Spectre Syntax

usim_ta title hold node=node1 edge=rise|fall|both ref_node=node2
[ref_scope=local|hier] ref_edge=rise|fall|both hold_time=time <window=window_size> <vl=logic_0_threshold> <vh=logic_1_threshold>
<vrl=logic_0_threshold> <vrh=logic_1_threshold> <depth=value>
<inst=[inst1 inst2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <xinst=[xinst1 xinst2 ...]> <start=time1> <stop=time2> [probe=0|1|2]

SPICE Syntax

.usim_ta title hold node=node1 edge=rise|fall|both ref_node=node2
ref_scope=local|hier] ref_edge=rise|fall|both hold_time=time <window=window_size> <vl=logic_0_threshold> <vh=logic_1_threshold>
<vrl=logic_0_threshold> <vrh=logic_1_threshold> <depth=value>
<inst=[inst1 inst2...]> <subckt=[subckt1 subckt2...]>
<xsubckt=[xsubckt1 xsubckt2...]> <xinst=[xinst1 xinst2 ...]>
<start=time1> <stop=time2> [probe=0|1|2]

Description

This command is used to report hold timing errors on the specified nodes with respect to a reference node. A hold timing error occurs when a permissible signal transition occurs between the times t_ref and t_ref+hold_time (if hold_time>0), or between t_ref+hold_time and t_ref+window_size (if hold_time<0). Here, t_ref is the time point when a permissible reference transition occurs.

A permissible transition occurs when the waveform crosses the corresponding logic threshold. For example, when a waveform crosses the logic 1 threshold while rising, it has a RISE transition. If the logic 0 state and logic 1 state thresholds for the signal, reference, or both, are not specified on the command card, then the default values are used. The default values can be set using the command usim_opt vl = value vh = value.

Arguments

 

title

The title of the current timing analysis.

node

Specifies the node on which the hold timing check is performed. Wildcards are supported in the node name (see Chapter 3, "Simulation Options").

edge=rise|fall|both

The permissible transition type for the signal node.

rise, a low-to-high transition is the permissible transition.

fall, a high-to-low transition is the permissible transition.

both, a low-to-high or a high-to-low transition is a permissible transition.

ref_node

The name of the reference node. Only a single node is allowed. Wild cards are not supported.

ref_scope=local|hier

Instructs how node and ref_node should be specified.

hier (default) - node and ref_node should be full hierarchical names, or equivalent wild card expressions. For ref_scope=hier, node and ref_node can be in different subcircuits.

local - node and ref_node should be local names (that is, with no hierarchy delimiter .). If ref_scope=local, node and ref_node in the same subcircuit will be checked.

ref_edge=rise|fall|both

The permissible transition for the reference node.

rise, a low-to-high transition is the permissible transition.

fall, a high-to-low transition is the permissible transition.

both, a low-to-high or a high-to-low transition is a permissible transition.

hold_time

The hold time. It can be positive or negative. If negative, the window parameter must be specified.

window=window_size

The time window after the reference transition. This parameter must be specified when the hold time is negative.

vl=logic_0_threshold

The threshold of logic 0 state for a signal. If the signal has a value less than vl, it is considered to be logic 0.

vh=logic_1_threshold

The threshold of logic 1 state for a signal. If the signal has a value greater than vh, it is considered to be logic 1.

vrl=logic_0_threshold

The threshold of logic 0 state for a reference. If the reference has a value less than vrl, it is considered to be logic 0.

vrh=logic_01threshold

The threshold of logic 1 state for a reference. If the reference has a value greater than vrh, it is considered to be logic 1.

depth=value

Specifies the depth in the circuit hierarchy that a wildcard name applies. If it is set as one, only the nodes at the current level is applied (default value is infinity).

inst=name

The hold timing check is applied to the subcircuit instances listed (wildcards are supported).

subckt=name

 

Specifies the subcircuit that this statement applies to. By default, it applies at the top level. If the statement is already in a subcircuit definition, this parameter is ignored. Setting this parameter is equivalent to defining the statement within a subcircuit declaration.

xsubckt=name

The hold timing check is excluded from instances of the subcircuits listed (wildcards are supported).

xinst=name

The hold timing check is excluded from the subcircuit instances listed (wildcards are supported).

start=time1

Timing analysis start time. The Virtuoso UltraSim simulator does not perform a timing analysis for simulation time < time1.

stop=time2

Timing analysis end time. The simulator does not perform a timing analysis for simulation time > time2.

probe=0|1|2

Automatically add probes for all nodes being checked for UltraSim timing analysis. If set to 0 (default), probe is not added. If set to 1, logic probes are added to all nodes being checked. If set to 2, regular probes are added to all nodes being checked.

Examples

In the following Spectre example

usim_ta ta_all hold node=n1 edge=rise ref_node=clk ref_edge=fall
hold_time=2n

tells the Virtuoso UltraSim simulator to report hold timing errors if the rise transitions on node n1 occur within the 2 ns, after a fall transition on the node clk.

In the following SPICE example

.usim_ta ta_all hold node=n2 edge=both ref_node=clk ref_edge=fall
hold_time=-1n window=5n

tells the simulator to report hold timing errors if the rise or fall transitions on node n2 occur within the time interval of 1 ns before the fall transition of the node clk, and 5 ns after the clk fall transition.

In the following Spectre examples

usim_ta ta_all hold node=x1.x2.sig … ref_node=clk [ref_scope=hier]

usim_ta ta_all hold node=*.sig … ref_node=clk inst=[x1.x2] [ref_scope=hier]

the node x1.x2.sig will be checked against the signal clk, which is taken as the top-level signal.

In the following Spectre example

.usim_ta ta_all hold node=sig … ref_node=clk … subckt=DTrigger ref_scope=local

assuming that there are two subcircuit instances x1 and x2 of type DTrigger, x1.sig will be checked against x1.clk and x2.sig will be checked against x2.clk. x1.sig and x2.clk will not be paired together. Here, clk is the same subcircuit of sig, but it is not considered as the top-level node.

Pulse Width Check

Spectre Syntax

usim_ta title pulsew node=node1 tmin_low=min_low_time tmax_low=max_low_time
tmin_high=min_high_time tmax_high=max_high_time <vl=logic_0_threshold>
<vh=logic_1_threshold> <depth=value> <inst=[inst1 inst2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <xinst=[xinst1 xinst2 ...]> <start=time1> <stop=time2> [probe=0|1|2]

SPICE Syntax

.usim_ta title pulsew node=node1 tmin_low=min_low_time tmax_low=max_low_time
tmin_high=min_high_time tmax_high=max_high_time <vl=logic_0_threshold>
<vh=logic_1_threshold> <depth=value> <inst=[inst1 inst2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <xinst=[xinst1 xinst2 ...]> <start=time1>
<stop=time2> [probe=0|1|2]

Description

This command is used to report pulse width errors on the waveforms of the specified nodes. Pulse width is defined to be the time interval during which the signal in a node stays in the low or high state. A pulse width error occurs when the pulse width of a signal falls outside the range (min_low_time, max_low_time) for the logic 0 state, or the range (min_high_time, max_high_time) for the logic 1 state.

If the logic 0 state and logic 1 state thresholds for the signal are not specified on the command card, the default values are used. The default values can be set using the command usim_opt vl = value vh = value.

Arguments

 

title

The title of the current timing analysis.

node

Specifies the name of the node on which the hold timing check is performed. Wildcards are supported in the node name (see Chapter 3, "Simulation Options").

min_low_time

The minimum value of the pulse width in logic 0 state.

max_low_time

The maximum value of the pulse width in logic 0 state.

min_high_time

The minimum value of the pulse width in logic 1 state.

max_high_time

The maximum value of the pulse width in logic 1 state.

vl=logic_0_threshold

 

The threshold of the logic 0 state for the signal. If the signal has value less than vl, it is considered to be logic 0.

vh=logic_1_threshold

 

The threshold of the logic 1 state for the signal. If the signal has value greater than vh, it is considered to be logic 1.

depth=value

 

Specifies the depth in the circuit hierarchy that a wildcard name applies. If it is set as one, only the nodes at the current level is applied (default value is infinity).

inst=name

The pulse width check is applied to the subcircuit instances listed (wildcards are supported).

subckt=name

 

Specifies the subcircuit to which this statement applies. By default, it applies to the top level. If the statement is already in a subcircuit definition, this parameter is ignored. Setting this parameter is equivalent to defining the statement within a subcircuit declaration.

xsubckt=name

The pulse width check is excluded from instances of the subcircuits listed (wildcards are supported).

xinst=name

The pulse width check is excluded from the subcircuit instances listed (wildcards are supported).

start=time1

Timing analysis start time. The Virtuoso UltraSim simulator does not perform a timing analysis for simulation time < time1.

stop=time2

Timing analysis end time. The simulator does not perform a timing analysis for simulation time > time2.

probe=0|1|2

Automatically add probes for all nodes being checked for UltraSim timing analysis. If set to 0 (default), probe is not added. If set to 1, logic probes are added to all nodes being checked. If set to 2, regular probes are added to all nodes being checked.

Example

Spectre Syntax:

usim_ta ta_all pulsew node=n1 tmin_low=4n tmax_low=6n tmin_high=5n
tmax_high=8n

SPICE Syntax:

.usim_ta ta_all pulsew node=n1 tmin_low=4n tmax_low=6n tmin_high=5n
tmax_high=8n

tells the Virtuoso UltraSim simulator to report pulse width errors if node n1 stays in the logic 0 state for less than 4 ns or longer than 6 ns, or if it stays in the logic 1 state for less than 5 ns or more than 8 ns.

Setup Check

Spectre Syntax

usim_ta title setup node=node1 edge=rise|fall|both ref_node=node2
[ref_scope=local|hier] ref_edge=rise|fall|both setup_time=time [window=window_size] [vl=logic_0_threshold] [vh=logic_1_threshold] [vrl=logic_0_threshold]
[vrh=logic_1_threshold] [depth=value] [inst=name] [subckt=name] [xsubckt=name] [xinst=name] [start=time1]
[stop=time2] [probe=0|1|2]

SPICE Syntax

.usim_ta title setup node=node1 edge=rise|fall|both ref_node=node2
[ref_scope=local|hier] ref_edge=rise|fall|both setup_time=time [window=window_size] [vl=logic_0_threshold] [vh=logic_1_threshold] [vrl=logic_0_threshold]
[vrh=logic_1_threshold] [depth=value] [inst=name][subckt=name] [xsubckt=name] [xinst=name] [start=time1]
[stop=time2] [probe=0|1|2]

Description

This command is used to report setup timing errors on the specified node(s) with respect to a reference node. A setup timing error has occurred if a permissible signal transition occurs between the times t_ref-setup_time and t_ref+window_size, where t_ref is the time when a permissible reference transition occurs.

A permissible transition has occurred if the waveform crosses the corresponding logic threshold. For example, when a waveform crosses the logic 1 threshold while rising, it has a RISE transition. If the logic 0 state and logic 1 state thresholds for the signal, reference, or both, are not specified on the command card, then the values must be set with the command usim_opt vl = value vh = value.

Arguments

 

title

The title of the current timing analysis.

node

Specifies the name of the node on which the setup timing check is performed. Wildcards are supported in the node name (see Chapter 3, "Simulation Options").

edge=(rise|fall|both)

The permissible transition type for the signal node.

rise, a low-to-high transition is the permissible transition.

fall, a high-to-low transition is the permissible transition.

both, a low-to-high or a high-to-low transition is a permissible transition.

ref_node

The name of the reference node. Only a single node is allowed.

ref_scope=local|hier

Instructs how node and ref_node should be specified.

hier (default) - node and ref_node should be full hierarchical names, or equivalent wild card expressions. For ref_scope=hier, node and ref_node can be in different subcircuits.

local - node and ref_node should be local names (that is, with no hierarchy delimiter .). If ref_scope=local, node and ref_node in the same subcircuit will be checked.

ref_edge=(rise|fall|both)

The permissible transition for the reference node.

rise, a low-to-high transition is the permissible transition.

fall, a high-to-low transition is the permissible transition.

both, a low-to-high or a high-to-low transition is a permissible transition.

setup_time

The setup time. It can be positive or negative. If negative, the window parameter must be specified.

window=window_size

The time window after the reference transition. This parameter must be specified when the setup time is negative.

vl=logic_0_threshold

The threshold of logic 0 state for a signal. If the signal has a value less than vl, it is considered to be logic 0.

vh=logic_1_threshold

The threshold of logic 1state for a signal. If the signal has a value greater than vh, it is considered to be logic 1.

vrl=logic_0_threshold

The threshold of logic 0 state for a reference. If the reference has a value less than vrl, it is considered to be logic 0.

vrh=logic_1_threshold

The threshold of logic 1 state for a reference. If the reference has a value greater than vrh, it is considered to be logic 1.

depth=value

Specifies the depth in the circuit hierarchy that a wildcard name applies. If it is set as one, only the nodes at the current level is applied (default value is infinity).

inst=name

The setup timing check is applied to the subcircuit instances listed (wildcards are supported).

subckt=name

Specifies the subcircuit that this statement applies in. By default, it applies in the top level. If the statement is already in a subcircuit definition, this parameter is ignored. Setting this parameter is equivalent to defining the statement within a subcircuit declaration.

xsubckt=name

The setup timing check is excluded from instances of the subcircuits listed (wildcards are supported).

xinst=name

The setup timing check is excluded from the subcircuit instances listed (wildcards are supported).

start=time1

Timing analysis start time. The Virtuoso UltraSim simulator does not perform a timing analysis for simulation time < time1.

stop=time2

Timing analysis end time. The simulator does not perform a timing analysis for simulation time > time2.

probe=0|1|2

Automatically add probes for all nodes being checked for UltraSim timing analysis. If set to 0 (default), probe is not added. If set to 1, logic probes are added to all nodes being checked. If set to 2, regular probes are added to all nodes being checked.

Examples

In the following Spectre example

usim_opt vl=0.3 vh=0.7

usim_ta ta_all setup node=n1 edge=rise ref_node=clk ref_edge=rise
setup_time=2n

tells the Virtuoso UltraSim simulator to report setup timing errors if the rise transitions on node n1 occur within the 2 ns before a rise transition on the node clk. Since the low and high thresholds are not specified in the command, the values in usim_opt are used in the analysis.

In the following SPICE example

.usim_ta ta_all setup node=n2 edge=both ref_node=clk ref_edge=fall
setup_time=-1ns window=3ns

tells the simulator to report setup timing errors if the rise or the fall transitions on node n2 occur within the time interval of 1 ns after the fall transition of the node clk, and 3 ns after the clk fall transition.

Timing Edge Check

Spectre Syntax

usim_ta title edge node=node1 edge=rise|fall|both ref_node=node2
[ref_scope=local|hier] ref_edge=rise|fall|both td_min=min_time td_max=max_time <vl=logic_0_threshold> <vh=logic_1_threshold> <vrl=logic_0_threshold> <vrh=logic_1_threshold> <trigger=trigger_type> <depth=value> <inst=[inst1 inst2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <xinst=[xinst1 xinst2...]> <start=time1> <stop=time2> [probe=0|1|2]

SPICE Syntax

.usim_ta title edge node=node1 edge=rise|fall|both ref_node=node2
[ref_scope=local|hier] ref_edge=rise|fall|both td_min=min_time td_max=max_time <vl=logic_0_threshold> <vh=logic_1_threshold> <vrl=logic_0_threshold> <vrh=logic_1_threshold> <trigger=trigger_type> <depth=value> <inst=[inst1 inst2...]> <subckt=[subckt1 subckt2...]> <xsubckt=[xsubckt1 xsubckt2...]> <xinst=[xinst1 xinst2...]> <start=time1> <stop=time2> [probe=0|1|2]

Description

This command is used to report timing edge errors on the specified node(s) with respect to a reference node. A timing edge error occurs when the permissible signal transition time falls outside the range t_ref+min_time and t_ref+max_time, where t_ref is the time that the permissible reference transition occurs.

A permissible transition occurs when the waveform crosses the corresponding logic threshold. For example, when a waveform crosses the logic 1 threshold while rising, it has a RISE transition. If the logic 0 state and logic 1 state thresholds for the signal, reference, or both, are not specified on the command card, the default values are used. The default values can be set using the command usim_opt vl = value vh = value. The trigger option allows you to decide whether a permissible signal transition, a permissible reference transition, or both trigger the timing edge check.

Arguments

 

title

The title of the current timing analysis.

node

Specifies the name of the node on which the timing edge check is performed. Wildcards are supported in the node name (see Chapter 3, "Simulation Options").

edge=(rise|fall|both)

The permissible transition type for the signal nodes.

rise, a low-to-high transition is the permissible transition.

fall, a high-to-low transition is the permissible transition.

both, a low-to-high or a high-to-low transition is a permissible transition.

ref_node

The name of the reference node. Only a single node is allowed.

ref_scope=local|hier

Instructs how node and ref_node should be specified.

hier (default) - node and ref_node should be full hierarchical names, or equivalent wild card expressions. For ref_scope=hier, node and ref_node can be in different subcircuits.

local - node and ref_node should be local names (that is, with no hierarchy delimiter .). If ref_scope=local, node and ref_node in the same subcircuit will be checked.

ref_edge=(rise|fall|both)

The permissible transition type for the reference nodes.

rise, a low-to-high transition is the permissible transition.

fall, a high-to-low transition is the permissible transition.

both, a low-to-high or a high-to-low transition is a permissible transition.

min_time

The minimum value of the delay between the permissible transitions of the signal and the reference.

max_time

The maximum value of the delay between the permissible transitions of the signal and the reference.

vl=logic_0_threshold

The threshold of logic 0 state for a signal. If the signal has a value less than vl, it is considered to be logic 0.

vh=logic_1_threshold

 

The threshold of logic 1 state for a signal. If the signal has a value greater than vh, it is considered to be logic 1.

vrl=logic_0_threshold

 

The threshold of logic 0 state for a reference. If the reference has a value less than vrl, it is considered to be logic 0.

vrh=logic_1_threshold

The threshold of logic 1 state for a reference. If the reference has a value greater than vrh, it is considered to be logic 1.

trigger=(ref|sig|both)

The trigger to start a timing edge check.

ref, a permissible transition at a reference triggers the check (this is the default value)

sig, a permissible transition at a signal triggers the check.

both, a permissible transition if a reference or a signal triggers the check.

depth=value

 

Specifies the depth in the circuit hierarchy that a wildcard name applies. If it is set as one, only the nodes at the current level is applied (default value is infinity).

inst=name

The timing edge check is applied to the subcircuit instances listed (wildcards are supported).

subckt=name

 

Specifies the subcircuit to which this statement applies. By default, it applies to the top level. If the statement is already in a subcircuit definition, this parameter is ignored. Setting this parameter is equivalent to defining the statement within a subcircuit declaration.

xsubckt=name

The timing edge check is excluded from instances of the subcircuits listed (wildcards are supported).

xinst=name

The timing edge check is excluded from the subcircuit instances listed (wildcards are supported).

start=time1

Timing analysis start time. The Virtuoso UltraSim simulator does not perform a timing analysis for simulation time < time1.

stop=time2

Timing analysis end time. The simulator does not perform a timing analysis for simulation time > time2.

probe=0|1|2

Automatically add probes for all nodes being checked for UltraSim timing analysis. If set to 0 (default), probe is not added. If set to 1, logic probes are added to all nodes being checked. If set to 2, regular probes are added to all nodes being checked.

Examples

In the following Spectre example

usim_ta ta_all edge node=n1 edge=rise ref_node=clk ref_edge=rise
td_min=2n td_max=5n

tells the Virtuoso UltraSim simulator to report timing edge errors if the delay between the rise transitions at node n1 and reference clk is less than 2 ns, or longer than 5 ns. Since the default value of trigger is ref, only a rise transition of the reference can trigger a timing edge check.

In the following SPICE example

.usim_ta ta_all edge node=n2 edge=rise ref_node=clk ref_edge=rise
td_min=2n td_max=5n trigger=sig

tells the simulator to report timing edge errors if the delay is outside the range of 2 ns and 5 ns. In this case, only a rise transition of the signal at n2 can trigger a timing edge check.

Bisection Timing Optimization

Description

When analyzing circuit timing violations and optimizing timing margins, multiple simulations and iterative analysis of the results is required. Virtuoso UltraSim simulator bisection timing optimization combines multiple simulations into a single characterization, reducing characterization time and simplifying the process. Typical applications include cell characterization timing measurements, and setup and hold timing optimization.

Bisection methodology, using a binary search strategy, seeks the optimal value of a specified input parameter associated with the goal value of an output variable. During a bisection search, the Virtuoso UltraSim simulator performs the following steps:

1.
Transient simulation with the specified parameter set at the lower and upper limits, respectively.
The measurement results for the lower and upper limits need to meet the pre-determined goal with one limit, and fail with the other limit (otherwise the simulator ends the simulation and prints a message).
2.
Simulation occurs at the mid-point of the search range and the resulting measurement is compared with the goal value.
The search range can be split into halves by choosing a new search range. The measurement results determine whether the first or second half is used in the search range.
3.
Multiple simulations occur until one of the following conditions are met: The relative tolerance for the input and output variables is satisfied or the maximum number of iterations is reached.

The bisection timing optimization feature only applies to vsource, and the sweeping parameter must be included in the expression of delay for either the pulse function or time-value pairs in the pwl function. If the Virtuoso UltraSim simulator is unable to find a qualified vsource, the bisection feature is turned off.

To use the simulator for bisection timing optimization, more accurate settings than the default simulator settings may be required. Cadence recommends first evaluating which Virtuoso UltraSim sim_mode and speed fulfils the specific accuracy requirements of your design before using bisection timing optimization (see Chapter 3, "Simulation Options" for more information about sim_mode and speed).

The Virtuoso UltraSim simulator reports the search process and optimized parameters in the netlistName.optlog file, and also generates waveforms and the measurement result (netlistName.mt0) for the final simulation.

Arguments

The following statements can be used for model optimization (.model), parameter optimization (.param), measurement (.measure), and transient analysis (.tran).

.model

.model optmodelname opt method=bisection <relin=value> <relout=value> <itropt=value>

This statement defines the optimization method (bisection) and the criteria used to determine the maximum number of iterations and relative tolerances to stop an iteration.

 

optmodelname

Name of the optimization model

method

Defines the optimization method

Note: Only bisection is supported.

relin

Specifies the relative tolerance of the input parameter (default value is 0.001)

relout

Specifies the relative tolerance of the output variable (default value is 0.001)

itropt

Specifies the maximum number of iterations (default value is 20 iterations)

.param

.param paramname=optparfun(<initial>, <lower>, <upper>)

This statement defines the optimization parameter (input variable) and its initial value, and the lower and upper limit values. The bisection method allows only one parameter and ignores the initial value of the parameter.

 

paramname

Name of the optimization parameter

optparfun

Name of the parameter function. Must be in the form of optxxxx.

initial

Specifies the initial value of the parameter

Note: The initial value is not used for bisection.

lower

Specifies the lower limit of the parameter

upper

Specifies the upper limit of the parameter

.measure

.measure tran meastitle <measfuncs> goal=goalvalue

This statement defines the measurement of the output variable and its goal value, which is used by the Virtuoso UltraSim simulator to evaluate the validity of a parameter value (that is, determines whether or not the parameter value is accepted in the analysis).

 

meastitle

Name of the statement

measfuncs

Specifies the measurement functions supported in a base-level .measure statement

goal

Specifies the desired value of the measurement

.tran

.tran <transtep> <tranendtime> sweep optimize=optparfun results=meastitle model=optmodename fastsweep=on|off

This statement defines the bisection and optimization methods.

 

optparfun

Name of the parameter function given in the .param statement.

meastitle

Name of the .measure statement.

optmodelname

Name of the optimization model given in the .model statement.

fastsweep

off - netlist file is parsed and simulation database is rebuilt for each bisection iteration (default).

on - netlist file parsing and building of simulation database is skipped for all bisection iterations after the first iteration (simulation database from first iteration is reused). This feature provides a performance advantage, but is limited to bisection applications with no change in the topology and initial circuit conditions between iterations.

Example

The following example illustrates how to measure the setup time of a delay-type flip flop (D-FF).

Figure 8-3  D-FF Setup Time Optimization


The D-FF has two input signals (DATA and CLK) and two output signals (Q and Q_). The assumption is that both input signals switch (0->1) at Td and Tclk, respectively. It is expected that the data will remain stable during setup time, until CLK switches.

The transition needs to satisfy the following condition,

Tclk > Td + setup_time

In this case, a transition (0->1) at the output of the D-FF Q occurs. Otherwise, no transition is found by the simulator and output Q remains at 0. The transition at the output can be detected by measuring the max value at Q. If the measurement result is 1, there is a transition; if 0, no transition occurs.

The following is a sample top-level netlist file containing bisection timing optimization settings.

**** Search setup time for D-FF by bisection method ****

.param vdd=2.5

...

// PWL stimulus for CLK & data

// td=delay characterizes the setup time and is to be adjusted by bisection

Vclk CLK 0 pwl(0n 0 1n 0 1.5n vdd 3n vdd 3.5n 0 10n 0 10.5n vdd)

Vdata data 0 pwl(0n 0 5n 0 5.5n vdd td=delay)

// instance of D Flip-Flop

x1 data CLK Q_ Q DFF_B

// set delay to be the input variable, and its searching range

.param delay=opt1(0n, 0n, 6n)

// set optimization method to be bisection

.model optmod opt method=bisection

// set measurement to find the transition of output and its goal value

.measure tran vout max v(Q) goal='0.9*vdd'

// set bisection transient simulation

.tran 0.1n 20n sweep optimize=opt1 results=vout model=optmod

// measure setup time

.measure tran setup_time trig v(data) value='0.5*vdd' rise=1 td=5n

+ targ v(clk) value='0.5*vdd' rise=1 td=5n

.end

The following sample output file shows the simulation results. The optimized value of delay is 5.083 ns. With this delay, the voltage at the Q output of the DFF is 2.504 v.

 

iter

lower

upper

current

result

1

0

6e-09

0

2.50407

2

0

6e-09

6e-09

0.013865

3

0

6e-09

3e-09

2.50407

4

3e-09

6e-09

4.5e-09

2.50398

5

4.5e-09

6e-09

5.25e-09

0.0138437

6

4.5e-09

5.25e-09

4.875e-09

2.5046

7

4.875e-09

5.25e-09

5.0625e-09

2.5043

8

5.0625e-09

5.25e-09

5.15625e-09

0.0138437

9

5.0625e-09

5.15625e-09

5.10938e-09

0.0138437

10

5.0625e-09

5.10938e-09

5.08594e-09

0.0263151

11

5.0625e-09

5.08594e-09

5.07422e-09

2.50424

12

5.07422e-09

5.08594e-09

5.08008e-09

2.50422

13

5.08008e-09

5.08594e-09

5.08301e-09

2.50396

Optimization

Method

bisection

 

 

Optimization

Parameter

delay

 

 

Optimized Value

5.08301e-09

 

 

vout

 

2.50396

 

 

Goal

 

2.25

 

 

Static Checks

The Virtuoso UltraSim simulator provides static checks which can be used to analyze circuit topology, parameter values, simulation information, and device and element characteristics.

Note: Static checks can be performed without DC and transient analysis by removing the transient analysis statement from the netlist file. However a complete netlist with all device models and supply voltages is required. For most static checks, input stimuli are optional.

ParagraphBullet
Netlist File Parameter Check checks whether the element size and simulation temperature are in the reasonable range or not.
ParagraphBullet
Print Parameters in Subcircuit prints the parameters located in a subcircuit.
ParagraphBullet
Resistor and Capacitor Statistical Checks determines whether resistor or capacitor values are within a specified range.
ParagraphBullet
Substrate Forward-Bias Check checks whether a MOSFET substrate becomes forward-biased.
ParagraphBullet
Static MOS Voltage Check monitors whether MOSFET bias voltage exceeds specified bounds or conditions.
ParagraphBullet
Static Diode Voltage Check checks the diode bias voltage after the netlist file is parsed and generates a report indicating whether the voltages exceeded the specified upper and lower bounds, or met the specified conditions.
ParagraphBullet
Static NMOS and PMOS Bulk Forward-Bias Checks determines whether bulk to drain/source junctions of NMOSFETs or PMOSFETs become forward-biased.
ParagraphBullet
Detect Conducting NMOSFETs and PMOSFETs compares the MOSFET gate voltage with the drain/source voltages to detect any transistors that cannot be turned off.
ParagraphBullet
Detect NMOS Connected to VDD detects NMOSFETs with terminal(s) that are directly connected to the constant or PWL voltage sources, which have a voltage value higher than vhth (without running transient simulation).
ParagraphBullet
Detect PMOS Connected to GND detects PMOSFETs with terminal(s) that are directly connected to the constant or PWL voltage sources, which have a voltage value lower than vlth (without running transient simulation).
ParagraphBullet
Static Maximum Leakage Path Check detects obvious DC leakage paths between all voltage sources through MOSFETs or other elements that are always on.
ParagraphBullet
Static High Impedance Check detects high impedance nodes without running DC or transient simulations.
ParagraphBullet
Static RC Delay Path Check analyzes the rise or fall time of any MOSFET gate nodes or output nodes without running transient simulation
ParagraphBullet
Static ERC Check detects electrical design rule violations without running DC or transient simulations.
ParagraphBullet
Static DC Path Check detects a DC path between voltage sources without running DC or transient simulation.
ParagraphBullet
info Analysis gives access to input/output values and operating-point parameters.
ParagraphBullet
Partition and Node Connectivity Analysis used for debugging (for example, checking the size of partitions and node connectivity).
ParagraphBullet
Warning Message Limit Categories customizes how warning messages are handled by the Virtuoso UltraSim simulator.

Netlist File Parameter Check

Spectre Syntax

usim_report chk_param <ermaxcap=v> <ermaxres=v> <ermaxmosw=v> <ermaxmosl=v>
<ermaxmosas=v> <ermaxmosps=v> <ermaxmostox=v> <ermaxdiodew=v>
<ermaxdiodel=v> <ermaxdiodea=v> <ermaxtemp=v> <erminfactor=v> <ermincap=v>
<erminres=v> <erminmosw=v> <erminmosl=v> <ermaxmosad=v> <ermaxmospd=v>
<erminmostox=v> <ermindiodew=v> <ermindiodel=v> <ermindiodea=v>
<ermintemp=v> <model=m> <wamaxcap=v> <wamaxres=v> <wamaxmosw=v> <wamaxmosl=v>
<wamaxmosas=v> <wamaxmosps=v> <wamaxmostox=v> <wamaxdiodew=v>
<wamaxdiodel=v> <wamaxdiodea=v> <wamaxtemp=v> <waminfactor=v> <wamincap=v>
<waminres=v> <waminmosw=v> <waminmosl=v> <wamaxmosad=v> <wamaxmospd=v>
<waminmostox=v> <wamindiodew=v> <wamindiodel=v> <amindiodea=v> <wamintemp=v>

SPICE Syntax

.usim_report chk_param <ermaxcap=v> <ermaxres=v> <ermaxmosw=v> <ermaxmosl=v>
<ermaxmosas=v> <ermaxmosps=v> <ermaxmostox=v> <ermaxdiodew=v>
<ermaxdiodel=v> <ermaxdiodea=v> <ermaxtemp=v> <erminfactor=v> <ermincap=v>
<erminres=v> <erminmosw=v> <erminmosl=v> <ermaxmosad=v> <ermaxmospd=v>
<erminmostox=v> <ermindiodew=v> <ermindiodel=v> <ermindiodea=v>
<ermintemp=v> <model=m> <wamaxcap=v> <wamaxres=v> <wamaxmosw=v> <wamaxmosl=v>
<wamaxmosas=v> <wamaxmosps=v> <wamaxmostox=v> <wamaxdiodew=v>
<wamaxdiodel=v> <wamaxdiodea=v> <wamaxtemp=v> <waminfactor=v> <wamincap=v>
<waminres=v> <waminmosw=v> <waminmosl=v> <wamaxmosad=v> <wamaxmospd=v>
<waminmostox=v> <wamindiodew=v> <wamindiodel=v> <amindiodea=v> <wamintemp=v>

Description

The chk_param command checks whether or not the element sizes and simulation temperatures are within a reasonable range. This command is executed after the netlist file is parsed, and the Virtuoso UltraSim simulator generates a report file with a .rpt_chkpar suffix.

When the checked data exceeds specified or default soft upper/lower limits, warning messages are issued. If the data abnormality exceeds specified or default absolute limits, error messages are generated and the simulation stops. Multiple chk_param command lines are supported by the Virtuoso UltraSim simulator.

Note: All errors are collected and printed by chk_param, and then the simulation is stopped (that is, chk_param is always performed on all instance parameters). If optional arguments are specified, the related parameters are checked using the specified value and the remaining parameters are checked using the default values.

Arguments

 

ermaxcap=v

The Virtuoso UltraSim simulator issues an error message and stops the simulation if any capacitance exceeds the specified upper bound value (default value is 1.0e-3 F)

wamaxcap=v

The simulator issues a warning message and continues the simulation if any capacitance exceeds the specified upper bound value (default value is 1.0e-8 F)

ermincap=v

The simulator issues an error message and stops the simulation if any capacitance is less than the specified lower bound value (default value is -1.0e-15 F)

wamincap=v

The simulator issues a warning message and continues the simulation if any capacitance is less than the specified lower bound value (default value is 0)

Note: The value needs to meet the following criteria: ermincap <= wamincap <= wamaxcap <= ermaxcap (otherwise a warning message is issued and the default value is used instead).

ermaxres=v

The simulator issues an error message and stops the simulation if any resistance exceeds the specified upper bound value (default value is 1.0e+15 ohms)

wamaxres=v

The simulator issues a warning message and continues the simulation if any resistance exceeds the specified upper bound value (default value is 1.0e+12 ohms)

erminres=v

The simulator issues an error message and stops the simulation if any resistance is less than the specified lower bound value (default value is 0)

waminres=v

The simulator issues a warning message and continues the simulation if any resistance is less than the specified lower bound value (default value is 0)

Note: The value needs to meet the following criteria: erminres <= waminres <= wamaxres <= ermaxres (otherwise a warning message is issued and the default value is used instead).

ermaxmosw=v

The simulator issues an error message and stops the simulation if any MOSFET channel width exceeds the specified upper bound value (default value is 1.0e-2 m)

wamaxmosw=v

The simulator issues a warning message and continues the simulation if any MOSFET channel width exceeds the specified upper bound value (default value is 1.0e-3 m)

erminmosw=v

The simulator issues an error message and stops the simulation if any MOSFET channel width is less than the specified lower bound value (default value is 1.0e-8 m)

waminmosw=v

The simulator issues a warning message and continues the simulation if any MOSFET channel width is less than the specified lower bound value (default value is 1.0e-7 m)

Note: The value needs to meet the following criteria: erminmosw <= waminmosw <= wamaxmosw <= ermaxmosw (otherwise a warning message is issued and the default value is used instead).

ermaxmosl=v

The simulator issues an error message and stops the simulation if any MOSFET channel length exceeds the specified upper bound value (default value is 1.0e-2 m)

wamaxmosl=v

The simulator issues a warning message and continues the simulation if any MOSFET channel length exceeds the specified upper bound value (default value is 1.0e-3 m)

erminmosl=v

The simulator issues an error message and stops the simulation if any MOSFET channel length is less than the specified lower bound value (default value is 1.0e-8 m)

waminmosl=v

The simulator issues a warning message and continues the simulation if any MOSFET channel length is less than the specified lower bound value (default value is 1.0e-7 m)

Note: The value needs to meet the following criteria: erminmosl <= waminmosl <= wamaxmosl <= ermaxmosl (otherwise a warning message is issued and the default value is used instead).

ermaxmosad=v

The simulator issues an error message and stops the simulation if any MOSFET drain diffusion area exceeds the specified upper bound value (default value is 1.0e-4 m2)

wamaxmosad=v

The simulator issues a warning message and continues the simulation if any MOSFET drain diffusion area exceeds the specified upper bound value (default value is 1.0e-6 m2)

Note: The value needs to meet the following criteria: wamaxmosad <= ermaxmosad (otherwise a warning message is issued and the default value is used instead).

ermaxmosas=v

The simulator issues an error message and stops the simulation if any MOSFET source diffusion area exceeds the specified upper bound value (default value is 1.0e-4 m2)

wamaxmosas=v

The simulator issues a warning and continues the simulation if any MOSFET source diffusion area exceeds the specified upper bound value (default value is 1.0e-6 m2)

Note: The value needs to meet the following criteria: wamaxmosas <= ermaxmosas (otherwise a warning message is issued and the default value is used instead).

ermaxmospd=v

The simulator issues an error message and stops the simulation if any MOSFET perimeter of the drain junction exceeds the specified upper bound value (default value is 1.0e-2 m2)

wamaxmospd=v

The simulator issues a warning message and continues the simulation if any MOSFET perimeter of the drain junction exceeds the specified upper bound value (default value is 1.0e-3 m2)

Note: The value needs to meet the following criteria: wamaxmospd <= ermaxmospd (otherwise a warning message is issued and the default value is used instead).

ermaxmosps=v

The simulator issues an error message and stops the simulation if any MOSFET perimeter of the source junction exceeds the specified upper bound value (default value is 1.0e-2 m2)

wamaxmosps=v

The simulator issues a warning message and continues the simulation if any MOSFET perimeter of the source junction exceeds the specified upper bound value (default value is 1.0e-3 m2)

Note: The value needs to meet the following criteria: wamaxmosps <= ermaxmosps (otherwise a warning message is issued and the default value is used instead).

ermaxmostox=v

The simulator issues an error message and stops the simulation if any MOSFET gate oxide thickness exceeds the specified upper bound value (default value is 5.0e-8 m)

Note: The ermaxmostox and wamaxmostox arguments should be specified in the same line of .usim_report.

wamaxmostox=v

The simulator issues a warning message and continues the simulation if any MOSFET gate oxide thickness exceeds the specified upper bound value (default value is 3.0e-8 m)

Note: The wamaxmostox and ermaxmostox arguments should be specified in the same line of .usim_report.

erminmostox=v

The simulator issues an error message and stops the simulation if any MOSFET gate oxide thickness is less than the specified lower bound value (default value is 5.0e-10 m)

waminmostox=v

The simulator issues a warning message and continues the simulation if any MOSFET gate oxide thickness is less than the specified lower bound value (default value is 5.0e-9 m)

Note: The value needs to meet the following criteria: erminmostox <= waminmostox <= wamaxmostox <= ermaxmostox (otherwise a warning message is issued and the default value is used instead).

ermaxdiodew=v

The simulator issues an error message and stops the simulation if any diode width exceeds the specified upper bound value (default value is 1.0e-2 m)

wamaxdiodew=v

The simulator issues a warning message and continues the simulation if any diode width exceeds the specified upper bound value (default value is 1.0e-3 m)

ermindiodew=v

The simulator issues an error message and stops the simulation if any diode width is less than the specified lower bound value (default value is 1.0e-8 m)

wamindiodew=v

The simulator issues a warning message and continues the simulation if any diode width is less than the specified lower bound value (default value is 1.0e-7 m)

Note: The value needs to meet the following criteria: ermindiodew <= wamindiodew <= wamaxdiodew <= ermaxdiodew (otherwise a warning message is issued and the default value is used instead).

ermaxdiodel=v

The simulator issues an error message and stops the simulation if any diode length exceeds the specified upper bound value (default value is 1.0e-2 m)

wamaxdiodel=v

The simulator issues a warning message and continues the simulation if any diode length exceeds the specified upper bound value (default value is 1.0e-3 m)

ermindiodel=v

The simulator issues an error message and stops the simulation if any diode length is less than the specified lower bound value (default value is 1.0e-8 m)

wamindiodel=v

The simulator issues a warning message and continues the simulation if any diode length is less than the specified lower bound value (default value is 1.0e-7 m)

Note: The value needs to meet the following criteria: ermindiodel <= wamindiodel <= wamaxdiodel <= ermaxdiodel (otherwise a warning message is issued and the default value is used instead).

ermaxdiodea=v

The simulator issues an error message and stops the simulation if any diode area exceeds the specified upper bound value (default value is 1.0e-4 m2)

wamaxdiodea=v

The simulator issues a warning message and continues the simulation if any diode area exceeds the specified upper bound value (default value is 1.0e-6 m2)

ermindiodea=v

The simulator issues an error message and stops the simulation if any diode area is less than the specified lower bound value (default value is 1.0e-16 m2)

wamindiodea=v

The simulator issues a warning message and continues the simulation if any diode area is less than the specified lower bound value (default value is 1.0e-14 m2)

Note: The value needs to meet the following criteria: ermindiodea <= wamindiodea <= wamaxdiodea <= ermaxdiodea (otherwise a warning message is issued and the default value is used instead).

ermaxtemp=v

The simulator issues an error message and stops the simulation if the circuit temperature, in degrees Celsius, exceeds the specified upper bound value (default value is 500)

wamaxtemp=v

The simulator issues a warning message and continues the simulation if the circuit temperature, in degrees Celsius, exceeds the specified upper bound value (default value is 150)

ermintemp=v

The simulator issues an error message and stops the simulation if the circuit temperature, in degrees Celsius, is less than the specified lower bound value (default value is -200)

wamintemp=v

The simulator issues a warning message and continues the simulation if the circuit temperature, in degrees Celsius, is less than the specified lower bound value (default value is -100)

Note: The value needs to meet the following criteria: ermintemp <= wamintemp <= wamaxtemp <= ermaxtemp (otherwise a warning message is issued and the default value is used instead).

ermaxfactor=v

The simulator issues an error message and stops the simulation if any instance multiplier is larger than the specified upper bound value.

Default: 1.79769e308

wamaxfactor=v

The simulator issues a warning message and continues the simulation if any instance multiplier factor is larger than the specified upper bound value.

Default: 1.79769e308

erminfactor=v

The simulator issues an error message and stops the simulation if any instance multiplier is less than the specified lower bound value.

Default: -1.79769e308

waminfactor=v

The simulator issues a warning message and continues the simulation if any instance multiplier factor is less than the specified lower bound value.

Note: The value needs to meet the following criteria: erminfactor <= waminfactor <= wamaxfactor <= ermaxfactor (a warning message is issued if the criteria is not met).

Default: -1.79769e308

model=m

Defines the model card name; if specified, all instances of the specified model name have their specific values checked (optional).

Note: If the model argument is not specified, the check is applied to all instances.

Example 1

In the following Spectre example

usim_report chk_param

The Virtuoso UltraSim simulator checks all instance parameters in the netlist file to make sure they are within the default value limits. If the values exceed the limits, the simulator issues warning or error messages.

Example 2

In the following SPICE example

.usim_report chk_param ermaxmosl=2u wamaxmosl=1u erminmosl=0.09u waminmosl=0.1u

The simulator checks all instance parameters in the netlist file to make sure they are within the default value limits (uses specified values to check the channel length of all MOSFET models). For example, if the channel length of any MOSFET model is greater than 2 um or less than 0.09 um, the simulator stops the simulation and issues an error message (if the channel length is greater than 1 um or less than 0.1 um, the simulation continues and a warning message is issued).

Example 3

In the following Spectre example

usim_report chk_param ermaxmosl=2u wamaxmosl=1u erminmosl=0.09u waminmosl=0.1u
model=hvmos

The simulator checks all instance parameters in the netlist file to make sure they are within the default value limits (uses specified values to check the channel length of all HVMOS MOSFET instances).

The following is an example of a xxxx.rpt_chkpar report file.

****** Parameters Check Errors ******

Total of 2 error(s) reported.

 

Model       Subckt    Parameter     Limits          Instance

resistor    ---       r = -0.12     ( < 0.0 )       r23

mos1        por       l = 1.0e-9    ( < 1.0e-8 )    xtop.xpor.m100

 

****** Parameters Check Warnings*******

Total of 2 warning(s) reported.

 

Model       Subckt    Parameter     Limits          Instance

diode1      bg        w = 0.002     ( < 0.003 )     x0.x1.x2.x3.d4

capacitor   ---       c = 1.0e-7    ( > 1.0e-8 )    c1

 

****** End of Parameter Check. ******

Print Parameters in Subcircuit

Spectre Syntax

usim_report param param_name [depth=..]

SPICE Syntax

.usim_report param param_name [depth=..]

Description

This option enables you to print subcircuit parameters into a netlist.para_rpt file. The option also supports wildcards and allows use of the depth argument to limit the levels of hierarchy (default for depth is infinity). Matching is case insensitive.

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

Examples

In the following Spectre example

usim_report param *

tells the simulator to print out all of the parameters from the entire design hierarchy.

In the following SPICE example

.usim_report param * depth=1

tells the simulator to print out all of the top level parameters.

In the following Spectre example

usim_report param x1.a

tells the simulator to look for a parameter named a in instance x1. If no match is found, the simulator issues a warning message.

In the next example

usim_report param x1.*

tells the simulator to print out all of the parameters in instance x1 and all the instances below x1.

In the next example

usim_report param x1*.* depth=2

tells the simulator to print out all of the parameters in all instances that are two hierarchies lower and have instance names that start with x1.

Examples of instance names starting with x1 include x1.aa, x1a.b, x1.x2.bb, and x1b.x3.bb (aa, b, and bb are the parameter names).

Resistor and Capacitor Statistical Checks

Resistor Statistical Check

Spectre Syntax

usim_report resistor type=warning rmax=value

usim_report resistor type=distr rmin=value rmax=value

usim_report resistor type=print rmin=value rmax=value nlimit=num sort=[dec|inc]

SPICE Syntax

.usim_report resistor type=warning rmax=value

.usim_report resistor type=distr rmin=value rmax=value

.usim_report resistor type=print rmin=value rmax=value nlimit=num sort=[dec|inc]

Description

The Virtuoso UltraSim simulator resistor statistical check determines if resistor values are within a reasonable user-defined range.

ParagraphBullet
type=warning prints a warning about small resistors and reports the number of resistors with values below rmax.
ParagraphBullet
type=distr prints resistor statistics into a xxxx.chk_resistor log file for resistors with values between rmin and rmax.
ParagraphBullet
type=print prints resistors with values between rmin and rmax into a xxxx.chk_resistor log file.

Arguments

 

type=warning|distr|print

Type of resistor statistic.

rmax=value

Specifies upper bound of resistor value to be reported (default value is 0.1 ohms).

rmin=value

Specifies lower bound of resistor value to be reported (default value is 0).

nlimit=num

Limits number of resistors printed in report (integer; default value is 10 resistors).

sort=dec|inc

Specifies sorting order printed resistors. If set to inc, resistors are sorted in increasing order of their values (default). If set to dec, resistors are sorted in decreasing order of their values.

Example 1

In the following Spectre example

usim_report resistor type=warning rmax=0.001

The Virtuoso UltraSim simulator issues a warning about small resistors if the circuit contains resistors with values less than 0.001 ohms, and reports the number of resistors in a log file.

Example 2

In the following SPICE example

.usim_report resistor type=distr rmin=0 rmax=0.02

The simulator generates statistics for resistors with values between 0 and 0.02 ohms in a xxxx.chk_resistor log file.

Example 3

In the following Spectre example

usim_report resistor type=print rmin=0 rmax=0.02 nlimit=30 sort=dec

The simulator prints the resistors with values between 0 and 0.02 ohms in a xxxx.chk_resistor log file. The resistors are sorted in decreasing order of their value. A total of 30 resistors are printed because nlimit=30.

The following is a sample xxxx.chk_resistor log file (includes resistor names and values):

.TITLE 'This file is :./test.chk_resistor'

.Usim_report resistor type=distr rmin=0 rmax=0.02

0 - 1m             0

1m - 10m           0

10m - 0.1          3

0.1 - 1            0

.Usim_report resistor type=print rmin=0 rmax=0.02 nlimit=30 sort=dec

x1.r12           0.001

r05              0.01

r03              0.01

Capacitor Statistical Check

Spectre Syntax

usim_report capacitor type=warning cmax=value
usim_report capacitor type=distr cmin=value cmax=value
usim_report capacitor type=print cmin=value cmax=value nlimit=num sort=[dec|inc]

SPICE Syntax

.usim_report capacitor type=warning cmax=value
.usim_report capacitor type=distr cmin=value cmax=value
.usim_report capacitor type=print cmin=value cmax=value nlimit=num sort=[dec|inc]

Description

The Virtuoso UltraSim simulator capacitor statistical check determines if capacitor values are within a reasonable user-defined range.

ParagraphBullet
type=warning prints a warning about small capacitors and reports the number of capacitors with values below cmax.
ParagraphBullet
type=distr prints capacitor statistics into a xxxx.chk_capacitor log file for capacitors with values between cmin and cmax.
ParagraphBullet
type=print prints capacitors with values between cmin and cmax into a xxxx.chk_capacitor log file.

Arguments

 

type=warning|distr|print

Type of capacitor statistic.

cmax=value

Specifies upper bound of capacitor value to be reported (default value is 1e-16 F).

cmin=value

Specifies lower bound of capacitor value to be reported (default value is 0).

nlimit=num

Limits number of capacitors printed in report (integer; default value is 10 capacitors).

sort=dec|inc

Specifies sorting order for printed capacitors. If set to inc, capacitors are sorted in increasing order of their values (default). If set to dec, capacitors are sorted in decreasing order of their values.

Example 1

In the following Spectre example

usim_report capacitor type=warning cmax=1e-17

The Virtuoso UltraSim simulator issues a warning about small capacitors if the circuit contains capacitors with values less than 0.01f F, and reports the number of capacitors in a log file.

Example 2

In the following SPICE example

.usim_report capacitor type=distr cmin=0 cmax=1e-17

The simulator generates statistics for capacitors with values between 0 and 0.01f F in a xxxx.chk_capacitor log file.

Example 3

In the following Spectre example

usim_report capacitor type=print cmin=0 cmax=1e-17 nlimit=30 sort=dec

The simulator prints the capacitors with values between 0 and 0.01f F in a xxxx.chk_capacitor log file. The capacitors are sorted in decreasing order of their value. A total of 30 capacitors are printed because nlimit=30.

The following is a sample xxxx.chk_capacitor log file (includes capacitor names and values):

.TITLE 'This file is :./pump.chk_capacitor'

.Usim_report capacitor type=print cmin=0 cmax=20p nlimit=10 sort=dec

x5.c1i1680               1e-11

x5.c1i1679               1e-11

x5.c1i1678               1e-11

x5.c1i1677               1e-11

x5.c1i1676               1e-11

x5.c1i1675               1e-11

cl                       1e-11

Substrate Forward-Bias Check

Spectre Syntax

usim_report chk_substrate title mode=[2|1|0] <num=n> <vt=v> <ith=iv> <tth=tv> <start=t1> <stop=t2> <model=m>

SPICE Syntax

.usim_report chk_substrate title mode=[2|1|0] <num=n> <vt=v> <ith=iv> <tth=tv> <start=t1> <stop=t2> <model=m>

Description

The chk_substrate command is used to check if a MOSFET substrate becomes forward-biased. The Virtuoso UltraSim simulator generates a report file with a .rpt_chksubs suffix (for example, if the netlist file name is circuit.sp, the report is named circuit.rpt_chksubs).

Note: This command can only be used to check MOSFET substrates, not other PN junctions.

You can perform substrate forward-bias checking before DC initialization or during the transient simulation. When used before DC initialization, if a PMOS field effect transistor (FET) substrate is connected to a ground or negative voltage source, or a NMOS FET is connected to a positive voltage source, the simulator issues a warning message. The voltage source can be a constant, PWL, pulse, exponential, or sine type. The voltage value at time zero is used by the simulator for substrate forward-bias checking.

When used during transient simulation, if the MOSFET substrate junction is forward-biased more than a threshold voltage (vt) and the junction current is more than a threshold current (ith), a warning message is generated.

Arguments

 

title

Reports titles of warning messages. If the title is not specified, a warning message is issued and the simulator does not perform the check.

Note: The title argument only applies to transient simulations.

mode=2|1|0

Specifies checking mode. If the mode is not specified, a warning message is issued and the simulator does not perform the check.

*
0 - all MOSFET substrate connections are checked before DC initialization. A warning message is printed if a PMOS FET substrate is connected to negative voltage source or a NMOS FET substrate is connected to a positive voltage source.
*
1 - all MOSFET substrate connections are checked during the transient simulation.
*
2 - all MOSFET substrate connections are checked before DC initialization and during the transient simulation.

num

Specifies maximum number of warning messages issued (default number is 1000 messages).

vt

Specifies threshold voltage (default value is 0.5 v).

Note: The vt argument only applies to transient simulations.

ith

Specifies threshold current (default value is 0 A).

Note: The ith argument only applies to transient simulations.

tth

Duration time (default value is 5 ns).

Note: The tth argument only applies to transient simulations.

start

Specifies checking start time (default value is 0).

Note: The start argument only applies to transient simulations.

stop

Specifies checking stop time (default value is transient stop time).

Note: The stop argument only applies to transient simulations.

model

Specifies the MOSFET model names to be checked. When the model argument is used, the vt and ith values apply to MOSFETs for the specified model (all MOSFET instances of remaining models are checked using default values).

Example 1

In the following Spectre example

usim_report chk_substrate sub1 mode=0

The Virtuoso UltraSim simulator checks the substrates for all the MOSFET models to see if any are forward-biased (checks performed before DC initialization). All warnings issued by the simulator are labelled with sub1 in the .rpt_chksubs file.

Example 2

In the following SPICE example

.usim_report chk_substrate sub2 mode=2 vt=0.15

The simulator checks the substrates for all the MOSFET models before DC initialization and during the transient simulation. If any MOSFET substrate PN junctions are forward-biased by an amount greater than 0.15 v, warnings labelled with sub2 are issued by the simulator.

Example 3

In the following Spectre example

usim_report chk_substrate subscheck3 mode=1 vt=0.6

usim_report chk_substrate subscheck4 mode=1 vt=0.5 model=lvmos

The simulator checks the substrates for all the MOSFET models during the transient simulation. If any MOSFET substrate PN junctions are forward-biased by an amount greater than 0.6 v, subscheck3 warnings are issued by the simulator. If the LVMOS model MOSFETs are forward-biased more than 0.5 v, warnings labelled with subscheck4 are issued.

Here is an example of a .rpt_chksubs report file.

****** MOS Substrate Forward Biased Before DC ******

Total of 2 Warnings reported.

Model Subckt vb Source Instance

nmos1 or 3.0000e+00 vddh xtop.xor.m100

pmos2 or -2.0000e+00 vss xtop.xor.m101

****** MOS Substrate Forward Biased During Simulation *****

Total of 2 Warnings reported.

Title Model Subckt Time Vb Vs Vd Instance

sub1 n1 por 3.0e-9 1.8000e+00 1.9387e+00 1.9629e+00 xtop.xpor.m100

sub2 p1 amp 3.0e-6 1.8000e+00 1.9997e+00 1.9507e+00 xtop.xamp.m200

Static MOS Voltage Check

Spectre Syntax

usim_report chk_mosv title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2 …]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vhth=volt> <vlth=volt> <vnth=volt> <vpth=volt> <vgdl=volt> <vgdu=volt> <vgsl=volt> <vgsu=volt> <vgbl=volt> <vgbu=volt> <vdsl=volt> <vdsu=volt> <vdbl=volt> <vdbu=volt> <vsbl=volt> <vsbu=volt> <cond=expression> <num=n> <conduct=1|2> <rpt_path=0|1> <rpt_node=0|1> <cap=0|1|2> <ppos_nneg=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1>

SPICE Syntax

.usim_report chk_mosv title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2 …]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vhth=volt> <vlth=volt> <vnth=volt> <vpth=volt> <vgdl=volt> <vgdu=volt> <vgsl=volt> <vgsu=volt> <vgbl=volt> <vgbu=volt> <vdsl=volt> <vdsu=volt> <vdbl=volt> <vdbu=volt> <vsbl=volt> <vsbu=volt> <cond=expression> <num=n> <conduct=1|2> <rpt_path=0|1> <rpt_node=0|1> <cap=0|1|2> <ppos_nneg=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1>

Description

This command is used to check MOSFET bias voltage after the netlist file is parsed, and generates a report if the voltages exceed the specified upper and lower bounds, or meet the specified conditions. The report file format is xxxx.rpt_chkmosv.

Arguments

 

title

Title of report.

model=model_name

Specifies the model to be checked. The voltage check is applied to transistors with model card name model_name.

subckt

Specifies the subcircuits to be checked. The voltage check is applied to transistors belonging to subcircuits. Wildcard (*) characters can be used.

inst

Specifies the instances to be checked. The voltage check is applied to transistors belonging to instances (wildcard characters can be used).

xsubckt

Specifies the subcircuits not to be checked (wildcard characters can be used).

xinst

Specifies the instances not to be checked (wildcard characters can be used).

skipsubckt

Specifies that elements inside the designated subcircuits skip voltage propagation (wildcard characters can be used).

skipinst

Specifies that elements inside the designated instances skip voltage propagation (wildcard characters can be used).

maxmos=n

Maximum number of MOSFETs in the voltage propagation path between the voltage source and the MOSFET terminals (default is infinity).

vhth=volt

If specified, voltage propagation starts only from constant voltage sources with values greater than or equal to vhth.

vlth=volt

If specified, voltage propagation starts only from constant voltage sources with values lower than or equal to vlth.

vnth=volt

NMOSFET threshold voltage. This value is used to calculate the voltage drop across a NMOSFET channel during voltage propagation (the default value is 0.5 v).

vpth=volt

PMOSFET threshold voltage. This value is used to calculate the voltage drop across a PMOSFET channel during voltage propagation (the default value is -0.5 v).

vgdl=volt

Reports the condition if Vgd is less than the specified lower bound voltage value.

vgdu=volt

Reports the condition if Vgd is greater than the specified upper bound voltage value.

vgsl=volt

Reports the condition if Vgs is less than the specified lower bound voltage value.

vgsu=volt

Reports the condition if Vgs is greater than the specified upper bound voltage value.

vgbl=volt

Reports the condition if Vgb is less than the specified lower bound voltage value.

vgbu=volt

Reports the condition if Vgb is greater than the specified upper bound voltage value.

vdsl=volt

Reports the condition if Vds is less than the specified lower bound voltage value.

vdsu=volt

Reports the condition if Vds is greater than the specified upper bound voltage value.

vdbl=volt

Reports the condition if Vdb is less than the specified lower bound voltage value.

vdbu=volt

Reports the condition if Vdb is greater than the specified upper bound voltage value.

vsbl=volt

Reports the condition if Vsb is less than the specified lower bound voltage value.

vsbu=volt

Reports the condition if Vsb is greater than the specified upper bound voltage value

cond=expression

Defines the conditional expression as the checking criteria. When the condition is met, the simulator generates a report. The conditional expression supports the following operators: <, >, <=, >=, ==, ||, &&, and variables: vgs, vgd, vgb, vds, vdb, vsb, vg, vd, vb, vs, l, w.

num=n

Specifies the maximum number of warnings generated by a particular check command (the default value is 300 warnings).

conduct=1|2

Specifies the conduction mode of MOSFETs. When set to 1 (default), the conduction state of MOSFETs is determined by the gate voltage. When set to 2, the MOSFETs are always in the conductive state disregarding the gate voltage.

rpt_path=0|1

Specifies whether or not to report the conducting paths. If set to 0 (default) paths are not reported. If set to 1, the conducting paths from the MOSFET terminals to the voltage sources are reported.

rpt_node=0|1

Specifies whether or not to report the node voltages propagated from voltage sources. If set to 0 (default), the node voltage is not reported. If set to 1, the minimum and maximum values of the node voltages propagated from voltage sources, and the depth of propagation paths, are reported.

cap=0|1|2

Specifies whether or not to propagate the node voltages through the capacitor. If set to 0 (default), the node voltages do not propagate through the capacitor. If set to 1, the AC voltage propagates through the capacitor. If set to 2, both DC and AC voltages propagate through the capacitor.

ppos_nneg=0|1

When ppos_nneg is set to 1, positive voltage sources can only be propagated through PMOSFETs, and negative or zero voltage sources can only be propagated through NMOSFETs (default value is 0; no limitation on the type of MOSFETs during voltage propagation).

pwl_time=time

When specified, the PWL voltage source is replaced by a constant voltage source for the propagation of voltage. The constant voltage value is equal to the PWL voltage source value at the specified time (by default, only voltage from constant voltage sources is propagated).

vsrc=[elem_name vmin vmax ...]

When specified, voltage from the voltage source element <elem_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth for propagation to begin. If vlth is set, vmin needs to be lower than or equal to vlth for propagation to begin (by default, only voltage from constant voltage sources is propagated). Multiple vsources are supported by the simulator.

vsrcnode=[node_name vmin vmax ...]

When specified, voltage from the voltage source node <node_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth for propagation to begin. If vlth is set, vmin needs to be lower than or equal to vlth for propagation to begin (by default, only voltage from constant voltage sources is propagated). Multiple vsource nodes are supported by the simulator.

xt_vsrc=0|1

When xt_vsrc is set to 1, voltage propagation starts only from highest and lowest constant voltage sources. When xt_vsrc is set to 0, voltage propagation starts from all constant voltage sources. In either case, the selection is subject to the rules set by vhth and vlth (default value is 0).

Example 1

In the following Spectre example

usim_report chk_mosv cck_mosv vt=0.01 vhth=0 vnth=0 vpth=0 vlth=100 inst=[*] num=100000 vsrcnode=[VPWR,8,10 VGND,0,1] rpt_node=2 cap=2

and the following SPICE example

.usim_report chk_mosv cck_mosv vt=0.01 vhth=0 vnth=0 vpth=0 vlth=100 inst=[*] num=100000 vsrcnode=[VPWR,8,10 VGND,0,1] rpt_node=2 cap=2

The chk_mosv command reports only the maximum and minimum propagated voltages from VPWR to VGND.

Example 2

In the following Spectre example

usim_report chk_mosv chk1 model=nch inst=[*] xinst=[x1.x2 x1.x3] vgsu=1.5 vdsl=0.1
rpt_path=1

The Virtuoso UltraSim simulator checks if the voltage for all of the nch MOSFETs Vgs and Vds are within the specified bounds. The transistors located in instances x1.x2 and x1.x3 are excluded from the voltage check. The MOSFETs with Vgs>1.5 or Vds<0.1 are reported in the xxxx.rpt_chkmosv log file. With rpt_path=1, the conducting path from the MOSFET terminals to voltage sources is reported.

Example 3

In the following SPICE example

.usim_report chk_mosv chk2 model=nch inst=[x1.*] skipinst=[x1.x2] vhth=0.9
vgsu=1.5

The simulator checks if the voltage of nch MOSFETs located in instance x1 for Vgs is less than 1.5 v. The voltage propagation only starts from voltage sources with values equal to or greater than 0.9 v. Voltage is not propagated through instance x1.x2. The MOSFETs with Vgs>1.5 are reported.

Example 3

In the following Spectre example

usim_report chk_mosv chk3 model=nch subckt=[nor2 nand2] maxmos=2 ppos_nneg=1
vgsu=1.5

The simulator checks the voltage of nch MOSFETs belonging to subcircuit nor2 or nand2. The MOSFET is reported if Vgs>1.5.

During voltage propagation, only the nodes that can be connected to a voltage source by going through a maximum of two MOSFETs are considered. With ppos_nneg=1, positive voltage sources can only be propagated through PMOSFETs, and negative or zero voltage sources can only be propagated through NMOSFETs.

Example 4

In the following SPICE example

.usim_report chk_mosv chk4 model=pch cond='vgs<1 || vds>1.8'

The simulator checks the voltage of all nch MOSFETs. If a nch MOSFET has Vgs<1 or Vds>1.8, then the MOSFET is reported in the xxxx.chk_mosv log file.

The following is an example of a xxxx.chk_mosv log file.

Total of 4 Warnings reported in mosv2.

 

Title

Model

Subckt

Vd

Vg

Vs

Vb

Instance

chk1

nmos

vco_50m

--

1.1000e+00

0.0000e+00

--

x1.mn1i1051

chk1

nmos

vco_50m

--

1.1000e+00

0.0000e+00

--

x1.mn1i1055

chk1

nmos

nor2

--

2.5000e+00

0.0000e+00

--

x1.x1i1023.mn1i1

chk1

nmos

nor2

--

2.5000e+00

0.0000e+00

--

x1.x1i1023.mn1i7

Total of 2 Warnings reported in chk2.

 

chk2

nmos

inv

2.5000e+00

--

0.0000e+00

--

x1.x1i1036.mn1i2

chk2

nmos

inv

2.5000e+00

--

0.0000e+00

--

x1.x1i1037.mn1

Static Diode Voltage Check

This command is used to check the diode bias voltage after the netlist file is parsed. In addition, it generates a report indicating whether the voltages exceeded the specified upper and lower bounds, or met the specified conditions. You can use the mode argument to specify the criteria that will be used to estimate the diode bias voltage (vpn):

When mode=0 (default), the following equation is used:

vpn = min(vp) - max(vn)

When mode=1, the following equation is used:

vpn = max(vp) - min(vn)

The report file name format for this check is xxxx.rpt_chkdiov.

Spectre Syntax

usim_report chk_diov title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2 …]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vhth=volt> <vlth=volt> <vnth=volt> <vpth=volt> <vpnl=volt> <vpnu=volt> <mode=0|1> <cond=expression> <num=n> <conduct=1|2> <rpt_path=0|1> <rpt_node=0|1> <ppos_nneg=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1>

SPICE Syntax

.usim_report chk_diov title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2 …]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vhth=volt> <vlth=volt> <vnth=volt> <vpth=volt> <vpnl=volt> <vpnu=volt> <mode=0|1> <cond=expression> <num=n> <conduct=1|2> <rpt_path=0|1> <rpt_node=0|1> <ppos_nneg=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1>

Arguments

 

title

Specifies the title of the report.

model=model_name

Specifies the diode type to be checked.

subckt=subckt_name

  

Specifies the subcircuits to be checked. Wildcard characters can be used.

inst=inst_name

Specifies the instances to be checked. Wildcard characters can be used.

xsubckt=subckt_name

  

Specifies the subcircuits to be excluded from the check. Wildcard characters can be used.

xinst=inst_name

Specifies the instances to be excluded from the check. Wildcard characters can be used.

skipsubckt= subckt_name

  

Specifies the subcircuits removed from the netlist. Wildcard characters can be used.

skipinst=inst_name

  

Specifies the instances removed from the netlist. Wildcard characters can be used.

maxmos=n

Specifies the maximum number of MOSFETs in the voltage propagation path between the voltage source and the MOSFET terminals. The default is infinity.

vhth=volt

Starts voltage propagation only from constant voltage sources with value greater than or equal to vhth.

vlth=volt

Starts voltage propagation only from constant voltage sources with value lower than or equal to vlth.

vnth=volt

Specifies the NMOSFET threshold voltage. This value is used to calculate the voltage drop across an NMOSFET channel during voltage propagation. The default value is 0.5V.

vpth=volt

Specifies the PMOSFET threshold voltage. This value is used to calculate the voltage drop across a PMOSFET channel during voltage propagation. The default value is 0.5V.

vpnl=volt

Reports the condition if vpn is less than the specified lower bound voltage value.

vpnu=volt

Reports the condition if vpn is greater than the specified upper bound voltage value.

mode=0|1

Specifies whether to report only definite violations or all possible violations. When set to 0 (default), only the definite violations will be reported. When set to 1, all possible violations will be reported.

cond=expression

Defines the conditional expression as the checking criteria. When the condition is met, the simulator generates a report. The conditional expression supports the following operators: <, >, <=, >=, ==, ||, &&, and variables: vpn, vp, vn, l, w.

Note: The conditional check can be combined with the checks based on the lower and upper bounds.

num=n

Specifies the maximum number of warnings generated by the particular check command. The default value is 300.

conduct=1|2

Specifies the conduction mode of MOSFETs. When set to 1 (default), the conduction state of MOSFETs is determined by the gate voltage. When set to 2, the MOSFETs are always in the conductive state disregarding the gate voltage.

rpt_node=0|1

Specifies whether or not to report the node voltages propagated from voltage sources. If set to 0 (default), the node voltage is not reported. If set to 1, the minimum and maximum values of the node voltages propagated from voltage sources, and the depth of propagation paths, are reported.

rpt_path=0|1

Specifies whether to report the conductive paths from the MOSFET terminals to the voltage sources. When set to 1, the software reports the conductive paths. The default value is 0.

ppos_nneg=0|1

When set to 1, propagates positive voltage sources only through PMOSFETs, and negative or zero voltage sources only through NMOSFETs. The default value is 0.

pwl_time=time

Replaces the PWL voltage source by a constant voltage source for the propagation of voltage. The constant voltage value is equal to the PWL voltage source value at the specified time. By default, only voltage from constant voltage sources will be propagated.

vsrc='elem_name, vmin, vmax'

  

Propagates the voltage from the voltage source element elem_name with the vmin and vmax values. If vhth is set, vmax must be greater than or equal to vhth to start propagation. If vlth is set, vmin must be lower than or equal to vlth to start propagation. By default, only voltage from constant voltage sources are propagated.

vsrcnode='node_name, vmin, vmax'

  

Propagates voltage from the voltage source node node_name with the vmin and vmax values. If vhth is set, vmax must be greater than or equal to vhth to start propagation. If vlth is set, vmin must be lower than or equal to vlth to start propagation. By default, only voltage from constant voltage sources will be propagated.

xt_vsrc=0|1

When set to 1, voltage propagation starts from highest and lowest constant voltage sources only. When set to 0, voltage propagation starts from all the constant voltage sources. In either case, the selection is determined by the rules set by vhth and vlth. The default value is 0.

Example

In the following Spectre example:

usim_report chk_diov chk1 vpnu=0.5 vpnl=-5 rpt_path=1

the Virtuoso UltraSim simulator checks if the bias voltage for all of the diodes are within the specified bounds. With rpt_path=1, the conducting path from the diode terminals to voltage sources is reported.

The following is an example of a xxxx.chk_diov log file:

Total of 1 Warnings reported in title.

 

Index      Title      Model       Subckt       Vp       Vn      Instance

 1         chk1       ndiode       --     1.0000e+00   0.0000e+00   d0

 

Path Report:

Element d0 p: 1

Through element mp (bsim3v3) propagate 1 v

From element vdd (vsource): 1 v

 

Element d0 n: 0

Through element m1 (bsim3v3) propagate 0 v

From node ground: 0 v

Static Resistance and Capacitance Voltage Check

Static Resistor Voltage Check

Spectre Syntax

usim_report chk_resv title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2 …]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vhth=volt> <vlth=volt> <vnth=volt> <vpth=volt> <vpnu = volt> <vpnl = volt> <cond=expression> <rpt_path=0|1> <rpt_node=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> <diode=0|1|2>

SPICE Syntax

.usim_report chk_resv title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2 …]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vhth=volt> <vlth=volt> <vnth=volt> <vpth=volt> <vpnu = volt> <vpnl = volt> <cond=expression> <rpt_path=0|1> <rpt_node=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> <diode=0|1|2>

Description

This command is used to check the voltage on a resistor.

Arguments

 

model

Specifies the model to be checked.

subckt

Specifies the subcircuits to be checked. Wildcard (*) characters can be used.

inst

Specifies the instances to be checked. Wildcard characters can be used.

xsubckt

Specifies the subcircuits not to be checked (wildcard characters can be used).

xinst

Specifies the instances not to be checked (wildcard characters can be used).

skipsubckt

Specifies that elements inside designated subcircuits skip voltage propagation (wildcard characters can be used).

skipinst

Specifies that elements inside designated instances skip voltage propagation (wildcard characters can be used).

vpnu=volt

Upper threshold for vp-vn, where vp is the voltage for the first terminal and vn is the voltage for the second terminal.

vpnl=volt

Lower threshold for vp-vn, where vp is the voltage for the first terminal and vn is the voltage for the second terminal.

cond=expression

Specifies the expression in terms of vpn.

maxmos=n

Maximum number of MOSFETs in the voltage propagation path between the voltage source and the MOSFET terminals (default is infinity).

vhth=volt

Voltage propagation starts only from constant voltage sources with values greater than or equal to vhth.

vlth=volt

Voltage propagation starts only from constant voltage sources with values less than or equal to vlth.

vpth=volt

PMOSFET threshold voltage. This value is used to calculate the voltage drop across a PMOSFET channel during voltage propagation (default value is -0.5 v).

vnth=volt

NMOSFET threshold voltage. This value is used to calculate the voltage drop across a NMOSFET channel during voltage propagation (default value is 0.5 v).

xt_vsrc=0|1

When xt_vsrc is set to 1, voltage propagation starts only from highest and lowest constant voltage sources. When xt_vsrc is set to 0 (default), voltage propagation starts from all of the constant voltage sources. In either case, the selection is subject to the rules set by vhth and vlth.

diode 0|1|2

Specifies whether or not to open the diodes when propagating voltages. When set to 0, diodes are opened. When set to 1 (default), diodes are treated according to their biased situation. When set to 2, diodes are shorted.

pwl_time=time

When specified, the PWL voltage source is replaced by a constant voltage source for the propagation of voltage. The constant voltage value is equal to the PWL voltage source value at the specified time (by default, only voltage from constant voltage sources is propagated).

rpt_path=0|1

Specifies whether or not to report the conducting paths. If set to 0 (default), no paths are reported. If set to 1, the conducting paths from the MOSFET terminals to the voltage sources are reported.

rpt_node=0|1

Specifies whether or not to report the node voltages propagated from voltage sources. If set to 0 (default), the node voltage is not reported. If set to 1, the minimum and maximum values of the node voltages propagated from voltage sources, and the depth of propagation paths, are reported.

vsrc=[elem_name vmin vmax ...]

When specified, voltage from the voltage source element <elem_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin has to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsources are supported.

vsrcnode=[node_name vmin vmax ...]

When specified, voltage from the voltage source node <node_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin has to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsource nodes are supported.

Static Capacitor Voltage Check

Spectre Syntax

usim_report chk_capv title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2 …]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vhth=volt> <vlth=volt> <vnth=volt> <vpth=volt> <vpnu = volt> <vpnl = volt> <cond=expression> <rpt_path=0|1> <rpt_node=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> <diode=0|1|2>

SPICE Syntax

.usim_report chk_capv title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2 …]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vhth=volt> <vlth=volt> <vnth=volt> <vpth=volt> <vpnu = volt> <vpnl = volt> <cond=expression> <rpt_path=0|1> <rpt_node=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> <diode=0|1|2>

Description

This command is used to check the voltage on a capacitor.

Arguments

 

model

Specifies the model to be checked.

subckt

Specifies the subcircuits to be checked. Wildcard (*) characters can be used.

inst

Specifies the instances to be checked. Wildcard characters can be used.

xsubckt

Specifies the subcircuits not to be checked (wildcard characters can be used).

xinst

Specifies the instances not to be checked (wildcard characters can be used).

skipsubckt

Specifies that elements inside designated subcircuits skip voltage propagation (wildcard characters can be used).

skipinst

Specifies that elements inside designated instances skip voltage propagation (wildcard characters can be used).

vpnu=volt

Upper threshold for vp-vn, where vp is the voltage for the first terminal and vn is the voltage for the second terminal.

vpnl=volt

Lower threshold for vp-vn, where vp is the voltage for the first terminal and vn is the voltage for the second terminal.

cond=expression

Specifies the expression in terms of vpn.

maxmos=n

Maximum number of MOSFETs in the voltage propagation path between the voltage source and the MOSFET terminals (default is infinity).

vhth=volt

Voltage propagation starts only from constant voltage sources with values greater than or equal to vhth.

vlth=volt

Voltage propagation starts only from constant voltage sources with values less than or equal to vlth.

vpth=volt

PMOSFET threshold voltage. This value is used to calculate the voltage drop across a PMOSFET channel during voltage propagation (default value is -0.5 v).

vnth=volt

NMOSFET threshold voltage. This value is used to calculate the voltage drop across a NMOSFET channel during voltage propagation (default value is 0.5 v).

xt_vsrc=0|1

When xt_vsrc is set to 1, voltage propagation starts only from highest and lowest constant voltage sources. When xt_vsrc is set to 0 (default), voltage propagation starts from all of the constant voltage sources. In either case, the selection is subject to the rules set by vhth and vlth.

diode 0|1|2

Specifies whether or not to open the diodes when propagating voltages. When set to 0, diodes are opened. When set to 1 (default), diodes are treated according to their biased situation. When set to 2, diodes are shorted.

pwl_time=time

When specified, the PWL voltage source is replaced by a constant voltage source for the propagation of voltage. The constant voltage value is equal to the PWL voltage source value at the specified time (by default, only voltage from constant voltage sources is propagated).

rpt_path=0|1

Specifies whether or not to report the conducting paths. If set to 0 (default), no paths are reported. If set to 1, the conducting paths from the MOSFET terminals to the voltage sources are reported.

rpt_node=0|1

Specifies whether or not to report the node voltages propagated from voltage sources. If set to 0 (default), the node voltage is not reported. If set to 1, the minimum and maximum values of the node voltages propagated from voltage sources, and the depth of propagation paths, are reported.

vsrc=[elem_name vmin vmax ...]

When specified, voltage from the voltage source element <elem_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin has to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsources are supported.

vsrcnode=[node_name vmin vmax ...]

When specified, voltage from the voltage source node <node_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin has to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsource nodes are supported.

Static NMOS and PMOS Bulk Forward-Bias Checks

Static NMOS Bulk Forward-Bias Check

Spectre Syntax

usim_report chk_nmosb title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2
…]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vt=volt> <vlth=volt> <vnth=volt> <vpth=volt> <mode=0|1> <num=n> <conduct=1|2> <rpt_path=0|1> <rpt_node=0|1|2|3|4> <rpt_node_list=[node1 node2...]> <rpt_node_file=file_name> <rpt_node_to_file=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> [<vsrcnodefile=[instance1 file1 [ instance2 file2 instance3 file3 ......]]>|<vsrcnodefile = [ file1 [ instance2 file2 instance3 file3 ......>]]>]

SPICE Syntax

.usim_report chk_nmosb title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2
…]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vt=volt> <vlth=volt> <vnth=volt> <vpth=volt> <mode=0|1> <num=n> <conduct=1|2> <rpt_path=0|1> <rpt_node=0|1|2|3|4> <rpt_node_list=[node1 node2...]> <rpt_node_file=file_name> <rpt_node_to_file=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> [<vsrcnodefile=[instance1 file1 [ instance2 file2 instance3 file3 ......]]>|vsrcnodefile = [ file1 [ instance2 file2 instance3 file3 ......]]>]

Description

This command is used to check if the bulk to drain/source junctions of NMOSFETs become forward-biased.

Note: Check is performed after the netlist file is parsed.

A warning message is generated when the bulk bias voltage meets following conditions:

ParagraphBullet
When mode=0:
min(Vb)>=min (Vd, Vs) + <vt>
ParagraphBullet
When mode=1:
max(Vb)>=min (Vd, Vs) + <vt>

where vt is the p-n junction threshold voltage of the NMOSFETs being checked. The report file format is xxxx.rpt_chknmosb.

Arguments

 

title

Title of report.

model=model_name

Specifies the model to be checked. The voltage check is applied to transistors with model card name model_name.

subckt

Specifies the subcircuits to be checked. The voltage check is applied to transistors belonging to subcircuits. Wildcard (*) characters can be used.

inst

Specifies the instances to be checked. The voltage check is applied to transistors belonging to instances (wildcard characters can be used).

xsubckt

Specifies the subcircuits not to be checked (wildcard characters can be used).

xinst

Specifies the instances not to be checked (wildcard characters can be used).

skipsubckt

Specifies that elements inside designated subcircuits skip voltage propagation (wildcard characters can be used).

skipinst

Specifies that elements inside designated instances skip voltage propagation (wildcard characters can be used).

maxmos=n

Maximum number of MOSFETs in the voltage propagation path between the voltage source and the MOSFET terminals (default is infinity).

vt=volt

Threshold voltage for p-n junction of NMOSFETs being checked (default value of vt for NMOSFET is 0.3 v).

vlth=volt

Voltage propagation starts only from constant voltage sources with values less than or equal to vlth (default value is 0.4 v)

vnth=volt

NMOSFET threshold voltage. This value is used to calculate the voltage drop across a NMOSFET channel during voltage propagation (default value is 0.5 v).

vpth=volt

PMOSFET threshold voltage. This value is used to calculate the voltage drop across a PMOSFET channel during voltage propagation (default value is -0.5 v).

mode=0|1

Specifies whether to report only definite violations or all possible violations. When set to 0 (default), only the definite violations will be reported. When set to 1, all possible violations will be reported.

num=n

Specifies the maximum number of warnings generated by a particular check command (default value is 300 warnings).

conduct=1|2

Specifies the conduction mode of MOSFETs. When set to 1 (default), the conduction state of MOSFETs is determined by the gate voltage. When set to 2, the MOSFETs are always in the conductive state disregarding the gate voltage.

rpt_path=0|1

Specifies whether or not to report the conducting paths. If set to 0, no paths are reported (default). If set to 1, the conducting paths from the MOSFET terminals to the voltage sources are reported.

rpt_node=0|1|2|3|4

Specifies whether or not to report the node voltages propagated from voltage sources. If set to 0 (default), the node voltage is not reported. If set to 1, both the minimum and maximum values of the node voltages propagated from voltage sources, and the depth of propagation paths are reported. If set to 2, only the maximum and minimum values of the top-level node voltages propagated from the voltage sources are reported. If set to 3, all nodes at the top level and sub level are reported. If set to 4, nodes specified using the rpt_node_list or rpt_node_file arguments are reported. If both rpt_node_list and rpt_node_file arguments are set, only the rpt_node_file argument is considered.

rpt_node_list=[node1 node2...]

Specifies the list of nodes for which propagated voltage values are reported.

rpt_node_file=filename

Specifies the file that contains the list of nodes for which propagated voltage values are reported.

rpt_node_to_file 0|1

Specifies whether the maximum and minimum node voltage values be written to the check-related log file. If set to 0 (default), the maximum and minimum node voltage values are written to the log file. If set to 1, the maximum and minimum node voltage values are written to a separate file with a .nv extension.

pwl_time=time

When specified, the PWL voltage source is replaced by a constant voltage source for the propagation of voltage. The constant voltage value is equal to the PWL voltage source value at the specified time (by default, only voltage from constant voltage sources is propagated).

vsrc=[elem_name vmin vmax ...]

When specified, voltage from the voltage source element <elem_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin has to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsources are supported.

vsrcnode=[node_name vmin vmax ...]

When specified, voltage from the voltage source node <node_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin has to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsource nodes are supported.

xt_vsrc=0|1

When xt_vsrc is set to 1, voltage propagation starts only from highest and lowest constant voltage sources. When xt_vsrc is set to 0, voltage propagation starts from all of the constant voltage sources. In either case, the selection is subject to the rules set by vhth and vlth (default value is 0).

vsrcnodefile [inst_name file_name> [....]]

Specifies the vsource nodes that should be considered for the specified subckt instances. The files that contain the information can be created for each individual subckt instances or for the top level using the rpt_node_to_file=1 option. If the file is applied to the top level, then no instance needs to be specified. <file_name> specifies the node files that are generated by UltraSim using the option rpt_node_to_file = 1. The file must contain the top-level nodes. <inst_name> specifies the instance names of the subcircuits that contain the nodes specified in <file_name>. For top-level nodes, the instance name can be skipped. The full hierarchical node names are formed by combining the instance name and the node name in the report node file.

Since nodes in different instances can connect to the same upper level nodes, multiple voltage sources can be applied to the same nodes. UltraSim compares the maximum and minimum voltage values of all the voltage sources applied to the same node. If there is difference in maximum or minimum values, UltraSim issues a warning and chooses the highest-maximum and lowest-minimum values for voltage propagation. If the node is not connected to any active elements, UltraSim only compares the voltage source values and voltage propagation is not conducted.

Example 1

In the following Spectre example

usim_report chk_nmosb chk1 model=nch inst=[*] xinst=[x1.x2 x1.x3] vt=0.5
rpt_path=1

The Virtuoso UltraSim simulator checks if all of the nch NMOSFETs bulk to drain/source junctions become forward-biased. The threshold voltage is 0.5 v. The transistors located in instances x1.x2 and x1.x3 are excluded from the bulk forward-bias check. The NMOSFETs with bulk forward-bias are reported. With rpt_path=1, the conducting path from the MOSFET terminals to voltage sources is also reported.

Example 2

In the following SPICE example

.usim_report chk_nmosb chk2 model=nch inst=[x1.*] skipinst=[x1.x2] vhth=0.9
maxmos=2

The simulator checks if nch NMOSFETs located in instance x1 for bulk to drain/source junctions become forward-biased. The voltage propagation starts only from voltage sources with values equal to or greater than 0.9 v. Voltage is not propagated through instance x1.x2. Only the nodes that can be connected to a voltage source by going through a maximum of two MOSFETs are considered. After the check is complete, NMOSFETs with bulk forward-bias are reported.

Static PMOS Bulk Forward-Bias Check

Spectre Syntax

usim_report chk_pmosb title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2
…]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vt=volt> <vhth=volt> <vnth=volt> <vpth=volt> <mode=0|1> <num=n> <conduct=1|2> <rpt_path=0|1> <rpt_node=0|1|2|3|4> <rpt_node_list=[node1 node2...]> <rpt_node_file=file_name> <rpt_node_to_file=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> [<vsrcnodefile=[instance1 file1 [ instance2 file2 instance3 file3 ......]]>|<vsrcnodefile = [ file1 [ instance2 file2 instance3 file3 ......>]]>]

Spectre Syntax

.usim_report chk_pmosb title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2
…]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vt=volt> <vhth=volt> <vnth=volt> <vpth=volt> <mode=0|1> <num=n> <conduct=1|2> <rpt_path=0|1> <rpt_node=0|1|2|3|4> <rpt_node_list=[node1 node2...]> <rpt_node_file=file_name> <rpt_node_to_file=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> [<vsrcnodefile=[instance1 file1 [ instance2 file2 instance3 file3 ......]]>|<vsrcnodefile = [ file1 [ instance2 file2 instance3 file3 ......>]]>]

Description

This command is used to check if the bulk to drain/source junctions of PMOSFETs become forward-biased.

Note: Check is performed after the netlist file is parsed.

A warning message is generated when the bulk bias voltage meets the following conditions:

ParagraphBullet
When mode=0:
max(Vb)<=max (Vd, Vs) + <vt>
ParagraphBullet
When mode=1:
min(Vb)<=max (Vd, Vs) + <vt>

where vt is the p-n junction threshold voltage of the PMOSFETs being checked. The report file format is xxxx.rpt_chkpmosb.

Arguments

 

title

Title of report.

model=model_name

Specifies the model to be checked. The bias check is applied to transistors with model card name model_name.

subckt

Specifies the subcircuits to be checked. The voltage check is applied to transistors belonging to subcircuits. Wildcard (*) characters can be used.

inst

Specifies the instances to be checked. The voltage check is applied to transistors belonging to instances (wildcard characters can be used).

xsubckt

Specifies the subcircuits not to be checked (wildcard characters can be used).

xinst

Specifies the instances not to be checked (wildcard characters can be used).

skipsubckt

Specifies that elements inside designated subcircuits skip voltage propagation (wildcard characters can be used).

skipinst

Specifies that elements inside designated instances skip voltage propagation (wildcard characters can be used).

maxmos=n

Maximum number of MOSFETs in the voltage propagation path between the voltage source and the MOSFET terminals.

vt=volt

Threshold voltage for p-n junction of PMOSFETs being checked (default value of vt for PMOSFET is -0.3 v).

vhth=volt

Voltage propagation starts only from constant voltage sources with values greater than or equal to vhth (default value is 0.7 v).

vnth=volt

NMOSFET threshold voltage. This value is used to calculate the voltage drop across a NMOSFET channel during voltage propagation (default value is 0.5 v).

vpth=volt

PMOSFET threshold voltage. This value is used to calculate the voltage drop across a PMOSFET channel during voltage propagation (default value is -0.5 v).

mode=0|1

Specifies whether to report only definite violations or all possible violations. When set to 0 (default), only the definite violations will be reported. When set to 1, all possible violations will be reported.

num=n

Specifies the maximum number of warnings generated by a particular check command (default value is 300 warnings).

conduct=1|2

Specifies the conduction mode of MOSFETs. When set to 1 (default), the conduction state of MOSFETs is determined by the gate voltage. When set to 2, the MOSFETs are always in the conductive state disregarding the gate voltage.

rpt_path=0|1

Specifies whether or not to report the conducting paths. If set to 0, no paths are reported (default). If set to 1, the conducting paths from the MOSFET terminals to the voltage sources are reported.

rpt_node=0|1|2|3|4

Specifies whether or not to report the node voltages propagated from voltage sources. If set to 0 (default), the node voltage is not reported. If set to 1, both the minimum and maximum values of the node voltages propagated from voltage sources, and the depth of propagation paths, are reported. If set to 2, only the maximum and minimum values of the top-level node voltages propagated from the voltage sources are reported. If set to 3, all nodes at the top level and sub level are reported. If set to 4, nodes specified using the rpt_node_list or rpt_node_file arguments are reported. If both rpt_node_list and rpt_node_file arguments are set, only the rpt_node_file argument is considered.

rpt_node_list=[node1 node2...]

Specifies the list of nodes for which propagated voltage values are reported.

rpt_node_file=filename

Specifies the file that contains the list of nodes for which propagated voltage values are reported.

rpt_node_to_file 0|1

Specifies whether the maximum and minimum node voltage values be written to the check-related log file. If set to 0 (default), the maximum and minimum node voltage values are written to the log file. If set to 1, the maximum and minimum node voltage values are written to a separate file with a .nv extension.

pwl_time=time

When specified, the PWL voltage source is replaced by a constant voltage source for the propagation of voltage. The constant voltage value is equal to the PWL voltage source value at the specified time (by default, only voltage from constant voltage sources is propagated).

vsrc=[elem_name vmin vmax ...]

When specified, voltage from the voltage source element <elem_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin needs to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsources are supported.

vsrcnode=[node_name vmin vmax ...]

When specified, voltage from the voltage source node <node_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin needs to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsource nodes are supported.

xt_vsrc=0|1

When xt_vsrc is set to 1, voltage propagation starts only from highest and lowest constant voltage sources. When xt_vsrc is set to 0, voltage propagation starts from all of the constant voltage sources. In either case, the selection is subject to the rules set by vhth and vlth (default value is 0).

vsrcnodefile [inst_name file_name> [....]]

Specifies the vsource nodes that should be considered for the specified subckt instances. The files that contain the information can be created for each individual subckt instances or for the top level using the rpt_node_to_file=1 option. If the file is applied to the top level, then no instance needs to be specified. <file_name> specifies the node files that are generated by UltraSim using the option rpt_node_to_file = 1. The file must contain the top-level nodes. <inst_name> specifies the instance names of the subcircuits that contain the nodes specified in <file_name>. For top-level nodes, the instance name can be skipped. The full hierarchical node names are formed by combining the instance name and the node name in the report node file.

Since nodes in different instances can connect to the same upper level nodes, multiple voltage sources can be applied to the same nodes. UltraSim compares the maximum and minimum voltage values of all the voltage sources applied to the same node. If there is difference in maximum or minimum values, UltraSim issues a warning and chooses the highest-maximum and lowest-minimum values for voltage propagation. If the node is not connected to any active elements, UltraSim only compares the voltage source values and voltage propagation is not conducted.

Example 1

In the following Spectre example

usim_report chk_pmosb chk1 model=pch inst=[*] xinst=[x1.x2 x1.x3] vt=-0.5
rpt_path=1

The Virtuoso UltraSim simulator checks if all of the pch PMOSFETs bulk to drain/source junctions become forward-biased. The threshold voltage is -0.5 v. The transistors located in instances x1.x2 and x1.x3 are excluded from the bulk forward-bias check. The PMOSFETs with bulk forward-bias are reported. With rpt_path=1, the conducting path from the MOSFET terminals to voltage sources is also reported.

Example 2

In the following SPICE example

.usim_report chk_pmosb chk2 model=pch inst=[x1.*] skipinst=[x1.x2] vhth=0.9
maxmos=2

The simulator checks if pch PMOSFETs located in instance x1 for bulk to drain/source junctions become forward-biased. The voltage propagation starts only from voltage sources with values equal to or greater than 0.9 v. Voltage is not propagated through instance x1.x2. Only the nodes that can be connected to a voltage source by going through a maximum of two MOSFETs are considered. After checking, PMOSFETs with bulk forward-bias are reported.

Detect Conducting NMOSFETs and PMOSFETs

Detect Conducting NMOSFETs

Spectre Syntax

usim_report chk_nmosvgs title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2
…]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vt=volt> <vlth=volt> <vnth=volt> <vpth=volt> <num=n> <conduct=1|2> <rpt_path=0|1> <rpt_node=0|1|2|3|4> <rpt_node_list=[node1 node2...]> <rpt_node_file=file_name> <rpt_node_to_file=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> [<vsrcnodefile=[instance1 file1 [ instance2 file2 instance3 file3 ......]]>|<vsrcnodefile = [ file1 [ instance2 file2 instance3 file3 ......>]]>]

SPICE Syntax

.usim_report chk_nmosvgs title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2
…]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vt=volt> <vlth=volt> <vnth=volt> <vpth=volt> <num=n> <conduct=1|2> <rpt_path=0|1> <rpt_node=0|1|2|3|4> <rpt_node_list=[node1 node2...]> <rpt_node_file=file_name> <rpt_node_to_file=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> [<vsrcnodefile=[instance1 file1 [ instance2 file2 instance3 file3 ......]]>|<vsrcnodefile = [ file1 [ instance2 file2 instance3 file3 ......>]]>]

Description

This command allows you to check NMOSFETs with minimum gate voltage higher than the source or drain voltage, such that the transistor can never be shut off.

Note: Check is performed after the netlist file is parsed.

A warning message is generated when the gate voltage meets the following condition:

min(Vg) >= min(Vd) + <vt> or min(Vg)>= min(Vs) + <vt>

where vt is the threshold voltage of the NMOSFETs being checked. The report format is xxxx.rpt_chknmosvgs.

Arguments

 

title

Title of report.

model=model_name

Specifies the model to be checked. The bias check is applied to transistors with model card name model_name.

subckt

Specifies the subcircuits to be checked. The voltage check is applied to transistors belonging to subcircuits. Wildcard (*) characters can be used.

inst

Specifies the instances to be checked. The voltage check is applied to transistors belonging to instances (wildcard characters can be used).

xsubckt

Specifies the subcircuits not to be checked (wildcard characters can be used).

xinst

Specifies the instances not to be checked (wildcard characters can be used).

skipsubckt

Specifies that elements inside designated subcircuits skip voltage propagation (wildcard characters can be used).

skipinst

Specifies that elements inside designated instances skip voltage propagation (wildcard characters can be used).

maxmos=n

Maximum number of MOSFETs in the voltage propagation path between the voltage source and the MOSFET terminals.

vt=volt

Threshold voltage for the NMOSFETs being checked (default value of vt for NMOSFET is 0.3 v).

vlth=volt

Voltage propagation starts only from constant voltage sources with values less than or equal to vlth (default value is 0.4 v).

vnth=volt

NMOSFET threshold voltage. This value is used to calculate the voltage drop across a NMOSFET channel during voltage propagation (default value is 0.5 v).

vpth=volt

PMOSFET threshold voltage. This value is used to calculate the voltage drop across a PMOSFET channel during voltage propagation (default value is -0.5 v).

num=n

Specifies the maximum number of warnings generated by a particular check command (default value is 300 warnings).

conduct=1|2

Specifies the conduction mode of MOSFETs. When set to 1 (default), the conduction state of MOSFETs is determined by the gate voltage. When set to 2, the MOSFETs are always in the conductive state disregarding the gate voltage.

rpt_path=0|1

Specifies whether or not to report the conducting paths. If set to 0, no paths are reported (default). If set to 1, the conducting paths from the MOSFET terminals to the voltage sources are reported.

rpt_node=0|1|2|3|4

Specifies whether or not to report the node voltages propagated from voltage sources. If set to 0 (default), the node voltage is not reported. If set to 1, both the minimum and maximum values of the node voltages propagated from voltage sources, and the depth of propagation paths, are reported. If set to 2, only the maximum and minimum values of the top-level node voltages propagated from the voltage sources are reported. If set to 3, all nodes at the top level and sub level are reported. If set to 4, nodes specified using the rpt_node_list or rpt_node_file arguments are reported. If both rpt_node_list and rpt_node_file arguments are set, only the rpt_node_file argument is considered.

rpt_node_list=[node1 node2...]

Specifies the list of nodes for which propagated voltage values are reported.

rpt_node_file=filename

Specifies the file that contains the list of nodes for which propagated voltage values are reported.

rpt_node_to_file 0|1

Specifies whether the maximum and minimum node voltage values be written to the check-related log file. If set to 0 (default), the maximum and minimum node voltage values are written to the log file. If set to 1, the maximum and minimum node voltage values are written to a separate file with a .nv extension.

pwl_time=time

When specified, the PWL voltage source is replaced by a constant voltage source for the propagation of voltage. The constant voltage value is equal to the PWL voltage source value at the specified time (by default, only voltage from constant voltage sources is propagated).

vsrc=[elem_name vmin vmax ...]

When specified, voltage from the voltage source element <elem_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin needs to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsources are supported.

vsrcnode=[node_name vmin vmax ...]

When specified, voltage from the voltage source node <node_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin needs to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsource nodes are supported.

xt_vsrc=0|1

When xt_vsrc is set to 1, voltage propagation starts only from highest and lowest constant voltage sources. When xt_vsrc is set to 0, voltage propagation starts from all of the constant voltage sources. In either case, the selection is subject to the rules set by vhth and vlth (default value is 0).

vsrcnodefile [inst_name file_name> [....]]

Specifies the vsource nodes that should be considered for the specified subckt instances. The files that contain the information can be created for each individual subckt instances or for the top level using the rpt_node_to_file=1 option. If the file is applied to the top level, then no instance needs to be specified. <file_name> specifies the node files that are generated by UltraSim using the option rpt_node_to_file = 1. The file must contain the top-level nodes. <inst_name> specifies the instance names of the subcircuits that contain the nodes specified in <file_name>. For top-level nodes, the instance name can be skipped. The full hierarchical node names are formed by combining the instance name and the node name in the report node file.

Since nodes in different instances can connect to the same upper level nodes, multiple voltage sources can be applied to the same nodes. UltraSim compares the maximum and minimum voltage values of all the voltage sources applied to the same node. If there is difference in maximum or minimum values, UltraSim issues a warning and chooses the highest-maximum and lowest-minimum values for voltage propagation. If the node is not connected to any active elements, UltraSim only compares the voltage source values and voltage propagation is not conducted.

Example 1

In the following Spectre example

usim_report chk_nmosvgs chk1 model=nch inst=[*] xinst=[x1.x2 x1.x3] vt=0.5
rpt_path=1

The Virtuoso UltraSim simulator checks NMOSFETs to determine if they are conducting. The threshold voltage is 0.5 v. The transistors located in instances x1.x2 and x1.x3 are excluded from the check. NMOSFETs with a minimum gate voltage greater than the maximum drain/source voltages are reported. With rpt_path=1, the conducting path from the MOSFET terminals to voltage sources is also reported.

Example 2

In the following SPICE example

.usim_report chk_nmosvgs chk2 model=nch inst=[x1.*] skipinst=[x1.x2] vhth=0.9
maxmos=2

The simulator checks the NMOSFETs located in instance x1 to determine if they are conducting. The voltage propagation starts only from voltage sources with values equal to or greater than 0.9 v. Voltage is not propagated through instance x1.x2. Only the nodes that can be connected to a voltage source by going through a maximum of two MOSFETs are considered. After checking, NMOSFETs with a minimum gate voltage greater than the maximum drain/source voltages are reported.

Detect Conducting PMOSFETs

Spectre Syntax

usim_report chk_pmosvgs title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2
…]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vt=volt> <vhth=volt> <vnth=volt> <vpth=volt> <num=n> <conduct=1|2> <mode=0|1> <rpt_path=0|1> <rpt_node=0|1|2|3|4> <rpt_node_list=[node1 node2...]> <rpt_node_file=file_name> <rpt_node_to_file=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> [<vsrcnodefile=[instance1 file1 [ instance2 file2 instance3 file3 ......]]>|<vsrcnodefile = [ file1 [ instance2 file2 instance3 file3 ......>]]>]<ignore_low_vg=0|1>

SPICE Syntax

.usim_report chk_pmosvgs title <model=model_name> <subckt=[subckt1 subckt2 …]> <inst=[inst1 inst2 …]> <xsubckt=[xsubckt1 xsubckt2 …]> <xinst=[xinst1 xinst2
…]> <skipsubckt=[skipsubckt1 skipsubckt2 …]> <skipinst=[skipinst1 skipinst2 …]> <maxmos=n> <vt=volt> <vhth=volt> <vnth=volt> <vpth=volt> <num=n> <conduct=1|2> <mode=0|1> <rpt_path=0|1> <rpt_node=0|1|2|3|4> <rpt_node_list=[node1 node2...]> <rpt_node_file=file_name> <rpt_node_to_file=0|1> <pwl_time=time> <vsrc=[elem1 vmin1 vmax1 elem2 vmin2 vmax2 …]> <vsrcnode=[node1 vmin1 vmax1 node2 vmin2 vmax2 …]> <xt_vsrc=0|1> [<vsrcnodefile=[instance1 file1 [ instance2 file2 instance3 file3 ......]]>|<vsrcnodefile = [ file1 [ instance2 file2 instance3 file3 ......>]]>]<ignore_low_vg=0|1>

Description

This command allows you to check PMOSFETs with gate voltage less than the source or drain voltage, such that the transistor can never be shut off.

Note: Check is performed after the netlist file is parsed.

You can use the mode argument to specify the criteria to estimate the maximum or minimum gate voltage.

When mode=1, the following equation is used:

min(Vg) <= max(Vd) - <vt> or min(Vg) <= max(Vs) - <vt>

When mode=0 (default), the following equation is used:

max(Vg) <= min(Vd) - <vt> or max(Vg) <= min(Vs) - <vt>

Here, vt is the threshold voltage of the PMOSFETs being checked.

Setting the ignore_low_vg option affects the check conditions. The simulator generates a warning when the gate voltage meets the following conditions:

ParagraphBullet
When mode=0 and ignore_low_vg=0
max(Vg) <= min(Vd) - <vt> or max(Vg) <= min(Vs) - <vt>
ParagraphBullet
When mode=1 and ignore_low_vg=0
min(Vg) <= max(Vd) - <vt> or min(Vg) <= max(Vs) - <vt>
ParagraphBullet
When mode=0 and ignore_low_vg=1
max(Vg) <= min(Vd) - <vt> or max(Vg) <= min(Vs) - <vt> and vhth<=max(vg)
ParagraphBullet
When mode=1 and ignore_low_vg=1
min(Vg) <= max(Vd) - <vt> or min(Vg) <= max(Vs) - <vt> and vhth<=min(vg)

The report format is xxxx.rpt_chkpmosvgs.

Arguments

 

title

Title of report.

model=model_name

Specifies the model to be checked.The bias check is applied to transistors with model card name model_name.

subckt

Specifies the subcircuits to be checked. The voltage check is applied to transistors belonging to subcircuits. Wildcard (*) characters can be used.

inst

Specifies the instances to be checked. The voltage check is applied to transistors belonging to instances (wildcard characters can be used).

xsubckt

Specifies the subcircuits not to be checked (wildcard characters can be used).

xinst

Specifies the instances not to be checked (wildcard characters can be used).

skipsubckt

Specifies that elements inside designated subcircuits skip voltage propagation (wildcard characters can be used).

skipinst

Specifies that elements inside designated instances skip voltage propagation (wildcard characters can be used).

maxmos=n

Maximum number of MOSFETs in the voltage propagation path between the voltage source and the MOSFET terminals.

vt=volt

Threshold voltage for p-n junction of PMOSFETs being checked (default value of vt for PMOSFET is -0.3 v).

vhth=volt

Voltage propagation starts only from constant voltage sources with values greater than or equal to vhth (default value is 0.7 v)

vnth=volt

NMOSFET threshold voltage. This value is used to calculate the voltage drop across a NMOSFET channel during voltage propagation (default value is 0.5 v).

vpth=volt

PMOSFET threshold voltage. This value is used to calculate the voltage drop across a PMOSFET channel during voltage propagation (default value is -0.5 v).

num=n

Specifies the maximum number of warnings generated by a particular check command (default value is 300 warnings).

conduct=1|2

Specifies the conduction mode of MOSFETs. When set to 1 (default), the conduction state of MOSFETs is determined by the gate voltage. When set to 2, the MOSFETs are always in the conductive state disregarding the gate voltage.

mode=1|2

Specifies whether to report only definite violations or all possible violations. When set to 0 (default), only the definite violations will be reported. When set to 1, all possible violations will be reported.

rpt_path=0|1

Specifies whether or not to report the conducting paths. If set to 0, no paths are reported (default). If set to 1, the conducting paths from the MOSFET terminals to the voltage sources are reported.

rpt_node=0|1|2|3|4

Specifies whether or not to report the node voltages propagated from voltage sources. If set to 0 (default), the node voltage is not reported. If set to 1, both the minimum and maximum values of the node voltages propagated from voltage sources, and the depth of propagation paths, are reported. If set to 2, only the maximum and minimum values of the top-level node voltages propagated from the voltage sources are reported. If set to 3, all nodes at the top level and sub level are reported. If set to 4, nodes specified using the rpt_node_list or rpt_node_file arguments are reported. If both rpt_node_list and rpt_node_file arguments are set, only the rpt_node_file argument is considered.

rpt_node_list=[node1 node2...]

Specifies the list of nodes for which propagated voltage values are reported.

rpt_node_file=filename

Specifies the file that contains the list of nodes for which propagated voltage values are reported.

rpt_node_to_file 0|1

Specifies whether the maximum and minimum node voltage values be written to the check-related log file. If set to 0 (default), the maximum and minimum node voltage values are written to the log file. If set to 1, the maximum and minimum node voltage values are written to a separate file with a .nv extension.

pwl_time=time

When specified, the PWL voltage source is replaced by a constant voltage source for the propagation of voltage. The constant voltage value is equal to the PWL voltage source value at the specified time (by default, only voltage from constant voltage sources is propagated).

vsrc=[elem_name vmin vmax ...]

When specified, voltage from the voltage source element <elem_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin needs to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsources are supported.

vsrcnode=[node_name vmin vmax ...]

When specified, voltage from the voltage source node <node_name> is propagated with values vmin and vmax. If vhth is set, vmax needs to be greater than or equal to vhth to start propagation. If vlth is set, vmin needs to be less than or equal to vlth to start propagation (by default, only voltage from constant voltage sources is propagated). Multiple vsource nodes are supported.

xt_vsrc=0|1

When xt_vsrc is set to 1, voltage propagation starts only from highest and lowest constant voltage sources. When xt_vsrc is set to 0, voltage propagation starts from all of the constant voltage sources. In either case, the selection is subject to the rules set by vhth and vlth (default value is 0).

vsrcnodefile [inst_name file_name> [....]]

Specifies the vsource nodes that should be considered for the specified subckt instances. The files that contain the information can be created for each individual subckt instances or for the top level using the rpt_node_to_file=1 option. If the file is applied to the top level, then no instance needs to be specified. <file_name> specifies the node files that are generated by UltraSim using the option rpt_node_to_file = 1. The file must contain the top-level nodes. <inst_name> specifies the instance names of the subcircuits that contain the nodes specified in <file_name>. For top-level nodes, the instance name can be skipped. The full hierarchical node names are formed by combining the instance name and the node name in the report node file.

Since nodes in different instances can connect to the same upper level nodes, multiple voltage sources can be applied to the same nodes. UltraSim compares the maximum and minimum voltage values of all the voltage sources applied to the same node. If there is difference in maximum or minimum values, UltraSim issues a warning and chooses the highest-maximum and lowest-minimum values for voltage propagation. If the node is not connected to any active elements, UltraSim only compares the voltage source values and voltage propagation is not conducted.

ignore_low_vg =0|1

Specifies the Vgs check criteria. The default value is 0. Set ignore_low_vg =1 to detect the missing low-to-high level shifters.

Example 1

In the following Spectre example

usim_report chk_pmosvgs chk1 model=pch inst=[*] xinst=[x1.x2 x1.x3] vt=0.5
rpt_path=1

The Virtuoso UltraSim simulator checks all PMOSFETs to determine if they are conducting. The threshold voltage is 0.5 v. The transistors located in instances x1.x2 and x1.x3 are excluded from the check. PMOSFETs with a maximum gate voltage less than the minimum drain/source voltages are reported. With rpt_path=1, the conducting path from the MOSFET terminals to voltage sources is also reported.

Example 2

In the following SPICE example

.usim_report chk_pmosb chk2 model=pch inst=[x1.*] skipinst=[x1.x2] vhth=0.9
maxmos=2

The simulator checks the PMOSFETs located in instance x1 to determine if they are conducting. The voltage propagation starts only from voltage sources with values equal to or greater than 0.9 v. Voltage is not propagated through instance x1.x2. Only the nodes that can be connected to a voltage source by going through a maximum of two MOSFETs are considered. After checking, PMOSFETs with a maximum gate voltage less than the minimum drain/source voltages are reported.

Detect NMOS Connected to VDD

Spectre Syntax

usim_report chk_nmos2vdd title <model=model_name> <subckt=subckt_name> <inst=inst_name> <xsubckt=subckt_name> <xinst=inst_name> <vhth=volt> <node=[all | gate | drain | source | bulk] > <num=n> <pwl_time=time>

SPICE Syntax

.usim_report chk_nmos2vdd title <model=model_name> <subckt=subckt_name> <inst=inst_name> <xsubckt=subckt_name> <xinst=inst_name> <vhth=volt> <node=[all | gate | drain | source | bulk] > <num=n> <pwl_time=time>

Description

This command allows you to detect NMOSFETs with terminal(s) that are directly connected to the constant or PWL voltage sources, which have a voltage value higher than vhth. When you run this command, the software generates a report file named as xxxx.rpt_chknmos2vdd.

 
ParagraphBullet
When you use this command:
 
ParagraphBullet
Inductors and resistors less than 1M ohm are considered as short.
 
ParagraphBullet
Diodes are considered as open.

Arguments

 

title

Title of report.

model=model_name

Specifies the MOSFET model to be checked.

subckt=subckt_name

Specifies the subcircuits to be checked. Wildcard (*) characters can be used.

inst=inst_name

Specifies the instances to be checked. Wildcard (*) characters can be used.

xsubckt=subckt_name

Specifies the subcircuits that should not be checked. Wildcard (*) characters can be used.

xinst=inst_name

Specifies the instances that should not be checked. Wildcard (*) characters can be used.

vhth=volt

Specifies the threshold value of constant voltage source to be checked.

The default value is 0.7V.

node=[terminal_name...]

Specifies the terminal names to be checked for connection to voltage sources. The terminal names can be all or a combination of drain, source, gate, and bulk. When all is specified, all the terminals except gate will be checked.

The default value is all.

num=n

Specifies the maximum number of warnings generated by the command. The default value is 300.

pwl_time=time

Replaces the PWL voltage source with a constant voltage source for checking. The constant voltage value is equal to the PWL voltage source value at the specified time (by default, only the constant voltage sources are checked).

Example 1

In the following Spectre example

usim_report chk_nmos2vdd chk1 model=n2 node = [drain source]

The Virtuoso UltraSim simulator checks if any NMOSFETs of model n2 have the drain and/or source terminal connected to a voltage source with value higher than 0.7V.

Example 2

In the following SPICE example

.usim_report chk_nmos2vdd chk2 vhth=1

The Virtuoso UltraSim simulator checks if any NMOSFETs have the drain, source, or bulk terminal connected to a voltage source with value higher than 1V.

Detect PMOS Connected to GND

Spectre Syntax

usim_report chk_pmos2gnd title <model=model_name> <subckt=subckt_name> <inst=inst_name> <xsubckt=subckt_name> <xinst=inst_name> <vlth=volt> <node=[all | gate | drain | source | bulk] > <num=n> <pwl_time=time>

SPICE Syntax

.usim_report chk_pmos2gnd title <model=model_name> <subckt=subckt_name> <inst=inst_name> <xsubckt=subckt_name> <xinst=inst_name> <vlth=volt> <node=[all | gate | drain | source | bulk] > <num=n> <pwl_time=time>

Description

This command allows you to detect PMOSFETs with terminal(s) that are directly connected to the constant or PWL voltage sources, which have a voltage value lower than vlth. When you run this command, the software generates a report file named as xxxx.rpt_chkpmos2gnd.

 
ParagraphBullet
When you use this command:
 
ParagraphBullet
Inductors and resistors less than 1M ohm are considered as short.
 
ParagraphBullet
Diodes are considered as open.

Arguments

 

title

Title of report.

model=model_name

Specifies the MOSFET model to be checked.

subckt=subckt_name

Specifies the subcircuits to be checked. Wildcard (*) characters can be used.

inst=inst_name

Specifies the instances to be checked. Wildcard (*) characters can be used.

xsubckt=subckt_name

Specifies the subcircuits that should not be checked. Wildcard (*) characters can be used.

xinst=inst_name

Specifies the instances that should not be checked. Wildcard (*) characters can be used.

vlth=volt

Specifies the threshold value of constant voltage source to be checked.

The default value is 0.4 v.

node=[terminal_name...]

Specifies the terminal names to be checked for connection to voltage sources. The terminal names can be all or a combination of drain, source, gate, and bulk. When all is specified, all the terminals except gate will be checked.

The default value is all.

num=n

Specifies the maximum number of warnings generated by the command.

The default value is 300.

Example 1

In the following Spectre example

usim_report chk_pmos2gnd chk3 model=p2 node = [drain source]

The Virtuoso UltraSim simulator checks if any PMOSFETs of model p2 have the drain and/or source terminal connected to voltage source with value lower than 0.4V.

Example 2

In the following SPICE example

.usim_report chk_pmos2vdd chk24 inst=[x1 x2]

The Virtuoso UltraSim simulator checks if any PMOSFETs of the instances x1 and x2 have the drain, source, or bulk terminal connected to a voltage source with value lower than 0.4V.

Static Maximum Leakage Path Check

.usim_report chk_maxleak title <num=n> <vlth=volt> <vhth=volt>

Description

The chk_maxleak command is used to detect static DC leakage paths between all voltage sources. NMOSFET is considered as ON when the gate is connected to a DC source higher than 0V. PMOSFET is considered as ON when the gate is connected to a DC source equal to or less than 0V. All reported maximum leakage paths are written into a file with the extension .rpt_maxleak.

Arguments

 

title

Reports titles of warning messages

num=n

Number of paths reported

vhth=volt

Starts voltage propagation only from constant voltage sources with values greater than or equal to vhth.

vlth=volt

Starts voltage propagation only from constant voltage sources with values lower than or equal to vlth.

Example

.usim_report chk_maxleak checkleak

The Virtuoso UltraSim simulator detects all static maximum leakage paths between voltage sources and generates the following report:

.TITLE 'This file is :./test.rpt_maxleak'

Static Leakage Path Report For checkleak

Leakage Path From vdd! (1.80V) to 0 (0.00V)

Element Between Node And Node

Vvdd! vdd!

M3                   vdd! net034

M5                   net034 0

End Path

Static High Impedance Check

Spectre Syntax

usim_report chk_hznode title <vnth=volt> <vpth=volt> <fanout=value>
<pwl_time=time> <num=n>

SPICE Syntax

.usim_report chk_hznode title <vnth=volt> <vpth=volt> <fanout=value>
<pwl_time=time> <num=n>

Description

This command allows you to detect high impedance nodes without running DC or transient simulations, and generates a .rpt_hznode report (the entire circuit is checked). A node is in high impedance state if there is no possible conducting path between the node and any voltage source or ground.

The following rules apply in the connectivity evaluation:

ParagraphBullet
NMOSFET is considered on if Vg-Vs >= Vnth
ParagraphBullet
PMOSFET is considered on if Vs-Vg >= -Vpth
ParagraphBullet
Resistor larger than Rth (See the Notes section for the definition of Rth) is considered as open.
ParagraphBullet
BJT, JFET, diode, resistor, and voltage sources are always considered on
ParagraphBullet
Capacitor and current sources are always assumed to be off

Arguments

 

title

Title of report.

vnth=volt

NMOSFET threshold voltage (default value is 0.5 V).

vpth=volt

PMOSFET threshold voltage (default value is -0.5 V).

fanout=value

Defines the type of nodes to be reported:

*
0 - all Hi-Z nodes
*
1 - only Hi-Z nodes connected to a MOSFET gate
*
2 - only Hi-Z nodes connected to a MOSFET body
*
3 - only Hi-Z nodes connected to a MOSFET gate or BJT base
*
4 - only Hi-Z nodes connected to a MOSFET gate, but not to the gate of MOSFETs with the drain and source shorted
*
5 - only Hi-Z nodes connected to a MOSFET gate or BJT base, but not to the gate of MOSFETs with the drain and source shorted, or the base of BJTs with the collector and emitter shorted

pwl_time=time

When specified, the PWL voltage source is replaced by a constant voltage source for the propagation of voltage. The constant voltage value is equal to the PWL voltage source value at the specified time (by default, only voltage from constant voltage sources is propagated).

num=n

Specifies maximum number of warnings reported.

Example

.usim_report chk_hznode title vnth=0.4 vpth=-0.4 fanout=4

The Virtuoso UltraSim simulator detects all high impedance nodes (that is, nodes with no possible path to voltage sources or ground) which are connected to a MOSFET gate or BJT base using the defined threshold voltages for NMOS and PMOS devices.

Notes

ParagraphBullet
The resistance threshold value Rth can be changed by the following option:
.usim_opt res_open = value
The default value of Rth is 100 Mohm.

Static RC Delay Path Check

Spectre Syntax

usim_report chk_rcdelay title <subckt=[subckt_name …]> <inst=[inst_name …]> <node=[node_name …]> <xsubckt=[subckt_name …]> <xinst=[inst_name …]> <xnode=[node_name …]> <maxtrise=value> <maxtfall=value> <mintrise=value> <mintfall=value> <fanoutmargin = [low,high]> <fanout=[0|1]> <risepmosfallnmos=[0|1]> <cmin=value> <vhth=value> <vlth=value> <num=value> <pwl_time=time>

SPICE Syntax

.usim_report chk_rcdelay title <subckt=[subckt_name …]> <inst=[inst_name …]> <node=[node_name …]> <xsubckt=[subckt_name …]> <xinst=[inst_name …]> <xnode=[node_name …]> <maxtrise=value> <maxtfall=value> <mintrise=value> <mintfall=value> <fanoutmargin = [low,high]> <fanout=[0|1]> <risepmosfallnmos=[0|1]> <cmin=value> <vhth=value> <vlth=value> <num=value> <pwl_time=time>

Description

Static RC delay path check enables you to analyze the rise or fall time of any MOSFET gate nodes or output nodes without running transient simulation. This command determines the charging paths from VDD and the discharging paths from GND, and estimates their rise or fall time based on the driver resistance and the load capacitance. The generated report is named as netlistName.rpt_chkrcdelay.

Note: The static RC delay path check does not work for designs using DSPF or SPEF stitching.

Arguments

 

title

Title of the report.

subckt=[subckt_name …]

  

Specifies the subcircuits to be checked. Wildcard characters can be used.

inst=[inst_name …]

  

Specifies the instances to be checked. Wildcard characters can be used.

node=[node_name …]

  

Specifies the nodes to be checked. Wildcard characters can be used.

xsubckt=[subckt_name …]

  

Excludes the specified subcircuits from the check. Wildcard characters can be used.

xinst=[inst_name …]

  

Excludes the specified instances from the check. Wildcard characters can be used.

xnode=[node_name …]

  

Excludes the specified nodes from the check. Wildcard characters can be used.

maxtrise=value

  

Reports only those node names for which the rise time is higher than the specified value. If no value is specified, the highest rise time for each node is reported.

maxtfall=value

  

Reports only those node names for which the fall time is higher than the specified value. If no value is specified, the highest fall time for each node is reported.

mintrise=value

  

Reports only those node names for which the rise time is lower than the specified value.

mintfall=value

  

Reports only those node names for which the fall time is lower than the specified value.

fanoutmargin=[low, high]

  

Specifies the relative fanout level (in ratio of VDD voltage) for which rise and fall time is measured.

Default: [0.10, 0.90]

fanout=[0|1]

Specifies whether to check all nodes or only MOSFET gate nodes. If fanout is set to 0, all nodes are checked and if fanout is set to 1, only MOSFET gate nodes are checked.

Default: 1

risepmosfallnmos=[0|1]

  

Specifies whether to consider PMOSFETs and NMOSFETs in tracing the rising path and falling path, respectively.

When set to 1, PMOSFETs are considered only in tracing the rising path and NMOSFETs are considered only in tracing the falling path. When set to 0, both PMOSFET and NMOSFET are considered.

Default: 1

Note: For transmission gates in the path, PMOSFETs and NMOSFETs are always considered.

cmin=value

Specifies the node capacitance threshold. Only nodes with total capacitance higher than the specified value will be reported.

Default: 10fF

vhth=value

Considers nodes with voltage greater than the specified value as VDD for rise path.

Default: 0.7V

vlth=value

Considers nodes with voltage less than the specified value as GND for fall path.

Default: 0.3V

num=value

Specifies the maximum number of paths to print in the report file.

Default: 300

pwl_time=time

Enables you to perform the check even if the design uses PWL sources for power supplies. In this case, the power supply voltage level for the charging and discharging paths is taken from the PWL source at the time specified by pwl_time. By default, only constant voltage sources are adopted as power sources for charging and discharging paths.

Examples

.usim_report chk_rcdelay example1 fanout=0 num=1000

In this example, the rise and fall times of all the nodes will be estimated, and the longest path for each node will be reported. In addition, only the first 1000 paths will be reported.

usim_report chk_rcdelay example2 subckt=controller maxtrise=2n maxtfall=2n mintrise=0.5n mintfall=0.5n fanoutmargin=[0.2,0.8]

In this example, UltraSim will report all the nodes and their paths in the subcircuit controller having estimated rise/fall times of more than 2ns, or rise/fall times of less than 0.5ns. The low and high threshold voltage levels are set to 20% and 80% of VDD level, respectively.

The following is a sample of the report:

========= Maximum Rise Time =========

Total of 1 Rise delay node(s).

 

Node: algo Capacitance 4.124e-14F Receiver: x1.xu2.mxp5

This node has 2 Rise path(s) over threshold.

Path 1 : Rise time 8.064e-10s

X1.xu6.mxp1

Path 2 : Rise time 8.064e-10s

X1.xu6.mxp0

 

========= Minimum Rise Time =========

Total of 1 Rise delay node(s).

 

========= Maximum Fall Time =========

Total of 1 Fall delay node(s).

 

Node: algo Capacitance 4.124e-14F Receiver: x1.xu2.mxp5

This node has 1 Fall path(s) over threshold.

Path 1 : Fall time 8.850e-10s

X1.xu6.mxn0

X1.xu6.mxn1

 

========= Minimum FAll Time =========

Total of 1 Fall delay node(s).

Static ERC Check

Spectre Syntax

usim_report erc title <powergatebulk=1> <underbiasbulk=1> <hotwell=1> <floatgate=1|2|3|4> <floatbulk=1|2> <dangle=1|2> <low2highvdd=1> <high2lowvdd=1> <powershort=1> <gate2power=1> <inputdiode=1|2> <vhth=volt> <vlth=volt> <rmax=res> <pwl_time=time> <num=value>

SPICE Syntax

.usim_report erc title <powergatebulk=1> <underbiasbulk=1> <hotwell=1> <floatgate=1|2|3|4> <floatbulk=1|2> <dangle=1|2> <low2highvdd=1> <high2lowvdd=1> <powershort=1> <gate2power=1> <inputdiode=1|2> <vhth=volt> <vlth=volt> <rmax=res> <pwl_time=time> <num=value>

Description

The static ERC check allows you to detect the following electrical design rule violations without running simulation:

ParagraphBullet
MOSFET power switch whose bulk is not hard-wired to power supply.
ParagraphBullet
MOSFET with forward biased junction.
ParagraphBullet
MOSFET with bulk not hard-wired to power supply.
ParagraphBullet
Unconnected MSOFET gate.
ParagraphBullet
Unconnected MOSFET bulk.
ParagraphBullet
Dangling node.
ParagraphBullet
MOSFET in high VDD domain driven by MOSFETs in low VDD domain.
ParagraphBullet
MOSFET in low VDD domain driven by MOSFETs in high VDD domain.
ParagraphBullet
MOSFET directly shorting VDD and GND.
ParagraphBullet
MOSFET gate connecting VDD and GND.
ParagraphBullet
Top-level inputs not connected to protecting diodes.

The static ERC check can be invoked without running DC or transient simulation, and it generates a report file (netlistName.rpt_erc) listing the details of the violations based on the specified arguments.

Arguments

 

title

Title of report

powergatebulk

Reports PMOSFET powergate with bulk not connected to VDD, or NMOSFET powergate with bulk not connected to GND.

underbiasbulk

Reports NMOSFET with bulk biased at voltage level higher than S/D, or PMOSFET with bulk biased at voltage level lower than S/D.

hotwell

Reports MOSFET with bulk not connected to VDD or GND.

floatgate

Reports unconnected MOSFET gate (1 = check all nodes, 2 = exclude top level nodes, 3 = exclude MOSCAP gates, 4 = exclude top level nodes and MOSCAP gates)

floatbulk

Reports unconnected MOSFET bulk (1 = check all nodes, 2 = exclude top level nodes)

dangle

Reports dangling nodes (1 = check all nodes, 2 = exclude top level nodes).

low2highvdd

Reports MOSFETs in high VDD domain driven by MOSFETs in low VDD domain.

high2lowvdd

Reports MOSFETs in low VDD domain driven by MOSFETs in high VDD domain.

powershort

Reports MOSFETs with channel connected directly between VDD and GND.

gate2power=1

Reports MOSFETs with a gate that is connected directly to power supply.

inputdiode=1|2

Reports top-level input nodes that are not protected by diodes. When set to 1, flags MOSFET gates that are not protected by a diode connected to GND. The cathode of the diode must be connected to the gate, and the anode must be connected to GND. When set to 2, flags MOSFET gates that are not protected by two diodes connected to VDD and GND. For the first diode, the cathode of the diode must be connected to the gate and the anode must be connected to GND. For the second diode, the anode of the diode must be connected to the gate and the cathode must be connected to VDD.

vhth=vol

Any voltages above vhth are considered as VDD (default = 0.5v).

vlth=vol

Any voltages below vlth are considered as GND (default = 0.5v)

rmax=res

Maximum resistance values where a node is still considered connected to voltage source node. (default = 100Mohm)

pwl_time=t

If specified, pwl sources are considered same as dc source. The voltage level at time=t is used.

num=value

Specifies the number of violations to be printed in the report file.

Examples

.usim_report erc check_pwrgate powergatebulk=1

Reports all powergates whose bulks are not connected to VDD or GND.

.usim_report erc check_pershort powershort =1 vhth=2.0

Reports any MOSFET shorting VDD or GND. VDD is any source with voltage level higher than 2V.

.usim_report erc check_floatgate floatgate=4

Reports all MOSFET floating gates but excludes top-level nodes and MOS capacitors.

Static DC Path Check

Spectre Syntax

usim_report chk_dcpath title <vnth=volt> <vpth=volt> <pwl_time=time>

SPICE Syntax

.usim_report chk_dcpath title <vnth=volt> <vpth=volt> <pwl_time=time>

Description

This command allows you to detect a DC path between voltage sources without running DC or transient simulation, and generates a report named netlistName.rpt_dcpath. The DC path can consist of MOSFETs, BJTs, diodes, inductors, and resistors with value less than 1G ohm. All other elements are treated as open.

When you run this command:

ParagraphBullet
NPN transistors are considered as conducting if VBE is greater than 0.5V.
ParagraphBullet
PNP transistors are considered as conducting if VBE is less than 0.5V.
ParagraphBullet
Diode is considered as conducting when it is forward biased by more than 0.5V.

Note: The entire circuit is checked.

Arguments

 

title

Title of report.

vnth=volt

Specifies the NMOSFET threshold voltage. The default value is 0.5 V.

vpth=volt

Specifies the PMOSFET threshold voltage. The default value is -0.5 V.

num=n

Specifies the maximum number of warnings generated by the command.

The default value is 300.

pwl_time=time

Replaces the PWL voltage source with a constant voltage source for checking. The constant voltage value is equal to the PWL voltage source value at the specified time (by default, only the constant voltage sources are checked).

rpt_path=0|1

Specifies whether to report the conducting paths. If set to 0, no paths are reported (default). If set to 1, the conducting paths from the MOSFET terminals to the voltage sources are reported.

Example 1

In the following SPICE example

.usim_report chk_dcpath checkdcpath rpt_path=1

The Virtuoso UltraSim simulator will detect DC paths between all voltage sources and report the list of elements in the conduction paths.

info Analysis

infoname info what=… where=… extremes=..

Description

This statement is similar to the Spectre® info statement and allows you to access input/output values and operating-point parameters. The parameter types include:

ParagraphBullet
Input parameters
Input parameters are those you specify in the netlist file, such as the given length of a MOSFET or the saturation current of a bipolar resistor.
ParagraphBullet
Output parameters
Output parameters are those the simulator computes, such as temperature-dependent parameters and the effective length of a MOSFET after scaling.
ParagraphBullet
Operating-point parameters
Operating-point parameters are those that depend on the operating point.

Note: You need to specify the info analysis within the Spectre section of the netlist file.

You can also list the minimum and maximum values for the input, output, and operating-point parameters, along with the names of the components that have those values.

Arguments

 

what=...

Supports the following values: inst, input, output, all, oppoint, models

where=...

Supports the following values: screen, nowhere, file, logfile, and rawfile

extremes=...

Supports the following values: yes, no, and only

Saving Parameters

You specify parameters you want to save with the info statement what parameter. You can assign the following settings to this parameter:

 

Parameters

Descriptions 

inst

Lists input parameters for instances of all components

models

Lists input parameters for models of all components

input

Lists input parameters for instances and models of all components

output

Lists effective and temperature-dependent parameter values

all

Lists input and output parameter values

oppoint

Lists operating-point parameters

You can also generate a summary of maximum and minimum parameter values with the extremes option.

Specifying the Output Destination

You can choose among several output destination options for the parameters you list with the info statement. With the info statement where parameter, you can

ParagraphBullet
Display the parameters on a screen, in a file, or a log file.
ParagraphBullet
Send the parameters to the raw file
Note: The Virtuoso UltraSim simulator only supports psf format.

When the info analysis is called from a transient analysis or used inside of a sweep, the name of the info analysis is appended by the parent analysis.

Examples

For example

TranAnalysis tran stop=30n infotimes=[1n 10n] infoname=opinfo

opinfo info what=oppoint where=rawfile

produces operating-point information for times 1 ns and 10 ns in the raw data file.

In the next example

Inparams info what=models where=screen extremes=only

tells the simulator to send the maximum and minimum input parameters for all models to a screen (the section for the info report is InParams).

Partition and Node Connectivity Analysis

The Virtuoso UltraSim simulator lets you perform partition and node connectivity analysis using usim_report commands. The information is reported in a .part_rpt file. For example, if the netlist filename is circuit.sp, then the report is named circuit.part_rpt.

The usim_report commands are useful for debugging simulations. For example, checking the size of partitions and their activities, as well as checking node activity to verify bus nodes.

Partition Reports

Size

Spectre Syntax

usim_report partition type=size

SPICE Syntax

.usim_report partition type=size

Description

Reports the partition information for the 10 largest partitions and includes:

ParagraphBullet
Partition index and all of its instances
ParagraphBullet
Node information for each of the instances, including input ports, output ports, and internal nodes
ParagraphBullet
Element information for each of the instances

Example

In the following Spectre syntax example

usim_report partition type=size

tells the Virtuoso UltraSim simulator to report the partition information for the 10 largest partitions in a .part_rpt file.

Activity

Spectre Syntax

usim_report partition type=act

SPICE Syntax

.usim_report partition type=act

Description

Reports the partition information for the 10 most active partitions (same format as the partition size report). Also reports some of the activity information for the partitions.

Example

In the following SPICE syntax example

.usim_report partition type=act

tells the UltraSim Virtuoso simulator to report the partition information for the 10 most active partitions in a .part_rpt file.

Node

Spectre Syntax

usim_report partition type=conn node=[node1 node2...]

SPICE Syntax

.usim_report partition type=conn node=[node1 node2...]

Description

Reports the partitions connected to the specified node (same format as the partition size report).

Arguments

 

node_name

The name of the node to be analyzed

Example

In the following Spectre example

usim_report partition type=conn node=d0<15>

tells the UltraSim Virtuoso simulator to report all partitions connected to node d0<15>.

Node Connectivity Report

Spectre Syntax

usim_report node elem_threshold=num full_hiername=yes|no

SPICE Syntax

.usim_report node elem_threshold=num full_hiername=yes|no

Description

Reports nodes with an element connection larger than elem_threshold (default value for elem_threshold is 10). The report includes the following information for each node:

ParagraphBullet
Number of active devices connected to the node
ParagraphBullet
Number of channel connected devices for the node

Arguments

 

elem_threshold

Minimum number of node connections to be printed.

full_hiername=yes|no

Flag used to print the full hierarchical name for the reported nodes.

*
yes - prints the full hierarchical name.
*
no - prints the hierarchical name (default).

For some types of circuits with complex hierarchies, the Virtuoso UltraSim simulator will print a limited hierarchy (starting from a specified subcircuit) to avoid generating a large report file. You can use full_hiername=yes to force the simulator to print the full hierarchical name.

Example

Spectre Syntax:

usim_report node elem_threshold=100

SPICE Syntax:

.usim_report node elem_threshold=100

tells the Virtuoso UltraSim simulator to report all nodes connected to more than 100 elements.

Warning Message Limit Categories

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.

Description

Spectre Syntax

usim_report warning_limit=value warning_id=[id1 id2 ....]

SPICE Syntax

.usim_report warning_limit=value warning_id=[id1 id2 ....]

Defines the maximum number of warning messages printed for category IDs id1 and id2. This option needs to be defined at the beginning of the netlist file in order to have an effect on all of the warning messages for the specified categories.

For more information about the key Virtuoso UltraSim simulator warning messages, refer to Table 8-1.

Arguments

 

Table 8-1  Warning Limit Options

Option

Description

warning_limit=value

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

id1, id2

Warning limit applies to these warning message category IDs.

Note: The prefix (component name) needs to be specified for the category ID.

Example

Spectre Syntax:

usim_report warning_limit = 20 warning_id=[USIM-1223 USIM-4003]

SPICE Syntax:

.usim_report warning_limit=20 warning_id=[USIM-1223 USIM-4003]

tells the simulator to print out 20 warning messages for WARNING USIM-1223 and USIM-4003.

 


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.