Product Documentation
Spectre Classic Simulator, Spectre APS, Spectre X, Spectre XPS, Spectre FMC Analysis, and Legato Reliability Solution User Guide
Product Version 23.1, September 2023

16


Device and Circuit Checks

This chapter contains the following topics:

Device Checks

The Spectre assert statement enables you to perform checks on design parameters, node voltages, element currents, model parameters, operating point parameters, and expressions. Use of wildcards and subcircuit scoping are supported.

When multiple assert checks are used, the check and checklimit statements enable you to manage which check is active during which analysis.

The assert, check, and checklimit statements are supported only in Spectre, Spectre APS, Spectre X, Spectre XPS-SPICE, and Spectre XPS-MS. Spectre XPS-SRAM, Spectre XPS-FLASH and Spectre XPS-DRAM do not support this functionality.

The following topics provide more details:

The assert Statement

The check Statement

The checklimit Statement

Global Options

The assert Statement

With the assert statement, you can set custom characterization checks to specify the safe operating conditions for your circuit. The Spectre circuit simulator then issues messages telling you when parameters move outside the safe operating area and, conversely, when the parameters return to the safe area, peak value and duration of violations. When a variable changes from an above-max value directly to a below-min value in one simulation step (that is, no stay within bounds), the Spectre simulator uses a middle bound solution (min+max)/2 to report the peak value and the duration of violations.

By default, Spectre reports the margin value as value - boundValue. However, if the ASSERT_PEAKMARGIN environment variable is set to 1, Spectre reports the margin value as peakValue - boundValue.

The four types of checks that are supported in the device checking flow are described below.

Check Description

Initial setup check

Includes checks on constant parameters only, such as constant global, model or instance parameters that are independent of the operating points.

This check is done only once before any analysis (including checklimit) is run. This check is also repeated once if any constant parameter is altered.

The initial setup check cannot be disabled and the error level cannot be changed by the checklimit statement.

Operating point check

Includes checks on MDL expressions and instance operating point parameters.

This check is done for each analysis.

Time domain check

Check done during transient analysis.

Frequency domain check

Check done during AC analysis.

Assert statements, which you specify in the netlist, are supported for transient, AC, DC, DC sweep, noise, pz, sp, and pss analyses.

You can set checks for any of the following:

The syntax for defining a check is

Name assert [ sub=subcircuit_master ] [ subs=subcircuit_masters ]
{ primitive=primitive | mod=model | dev=instance  }
{ param=param | modelparam=mod_param | expr="[var_list;] mdl_expr" }
[ min=value ] [ max=value ]
[ duration=independentvar_limit ]
[ message=”message”] 
[ level= none | notice | warning | error | fatal ]
[ info= yes | no ]
[ values=[enum_list] ]
[ boolean=true | false ]
[ anal_types=[analysis_list] ]
[ check_windows=[start1 stop1 start2 stop2...] ]
[ maxvio_perinst= value ]
[ maxvio_all= value ]
[ extreme=yes|no ]
[ safecheck=none|func|check ]
[ skip_dev_inside_subckt ]
[ min_peak=value ]
[ max_peak=value ]

where

Name

Name of the check statement. The name must not start with a number or contain invalid characters like space, dot, comma, slash, etc.

sub=subcircuit_master

Subcircuit over which the check is to be applied.
An assert on a subcircuit type applies the check hierarchically to the lowest leaf-level instances. For example, If you define an assert statement with sub and mod, all device instances of the specified model type over all instances of the specified subcircuit type are checked. If the subcircuit type or master instantiates another subcircuit, the devices and models in that instance will be checked as well.
Wildcards are supported. Double quotation marks are required with wildcards. For example, sub="n*".

subs=subcircuit_masters

The subcircuits over which the check is to be applied.

Wildcards are supported. For example,
subs=[nmos? pmos*]

Enclose the subcircuit names within square brackets as shown in the above example.

primitive=primitive

Primitive whose model or instance parameter is to be checked. For a complete list of primitives, see spectre -h components.

mod=model

Model type whose model or instance parameter is to be checked. If the parameter to be checked is an instance parameter (specified using the param parameter), all instances of the specified model are checked. If the parameter to be checked is a model parameter (specified using the modelparam parameter), only the specified model is checked.

dev=instance

Device or subcircuit instance whose instance parameter is to be checked. A name is first looked up as a subcircuit instance and then as a device instance. If an inline subcircuit and inline device inherits the same hierarchical name, the assert is applied to the subcircuit instance. If, however, the parameter specified is a device instance parameter, the assert is applied to the device instance. Wildcards are supported.

In the case of stacked FETs, Spectre supports asserts to check for a violating device.

param=param

Device instance parameter, netlist parameter, operating point parameter, subcircuit parameter, node voltage or device terminal current to be checked. It is checked within the scope of the specified sub, subs, dev, mod or primitive.

modelparam=mod_param

Model parameter to be checked.

expr="[var_list;] mdl_expr"

MDL expression to be checked.

The var_list is optional and allows the Spectre simulator to return the value of specified variables. For example,
expr="v_ds=v(d,s); len=l; v(d,s)<3 || l>0.4u"

An MDL expression can contain instance parameters, operating point parameters, netlist parameters, subcircuit parameters, node voltages, device terminal currents, or boolean expressions. The expression is checked within the scope of the specified sub, subs, primitive, mod or dev.

The Spectre circuit simulator displays an error message when a boolean expression is true (by default) or when a non-boolean expression crosses the maximum or minimum value. You do not need to specify the max or min for a boolean expression.

min=value

Lower limit of the parameter to be checked.
Default value: - ∞

max=value

Upper limit of the parameter to be checked.
Default value: +∞

Note the following:

  • The expression of constants is allowed to be used in min and max parameters. However, MDL expressions with variables, such as V() and I() are not allowed. (See Example 4)
  • The min and max parameters are ignored for boolean expression checks.

duration=independentvar_limit

Time period over which the check has to be violated before a warning is displayed. Applicable to transient analyses only.

message=”message

Message to be printed if the check fails.

level= none | notice | warning | error | fatal

Severity level of the message if the check fails.
If the severity level is notice or warning, simulation continues after the message is displayed.
If the severity level is error, the Spectre circuit simulator aborts the analysis when the first error-level violation occurs.
If the severity level is fatal, the Spectre circuit simulator aborts the simulation when the first fatal-level violation occurs.
Default value: warning

info= yes | no

When yes, the parameter will not be checked against min/max; only its value will be printed.
Default: no

values=[enum_list]

List of values of enumeration type parameters. By default, violations are reported when an enumeration parameter has a value inside enum_list and getting outside of enum_list. If the boolean=false parameter is set, violations are reported when an enumeration parameter has a value outside enum_list.

Example: param=region values=[triode sat]

Note the following:

  • Without specifying values, an enumeration type parameter check will be ignored.
  • There is no need to specify the min or max parameter for enumeration type parameter checks.

boolean= true | false

This is used to choose report style for boolean violations. When set to true (default), the violation is printed when the expression changes from false to true. When set to false, the violation is printed when the expression changes from true to false.

anal_types=[analysis_list]

The list of analysis types for which the check is to be applied. By default, the check is applied to all the analyses specified in the netlist. Possible values are ac, dc, noise, pz, sp, tran, and pss.

Example: anal_types=[dc tran]

The anal_types parameter is ignored if an invalid analysis type is specified.

check_windows

The time windows within which the assert is to be enabled or disabled. Sweep windows are not supported. Therefore, this parameter should not be used with sweep analysis.

If the check_windows parameter is defined in both assert and checklimit statements, the check_windows parameter in the assert statement takes higher precedence over the check_windows parameter specified in the checklimit statement.

maxvio_perinst

Limit the violation number to a specified value <value> for each particular checked instance. This means that if the violation count reaches the number specified by <value> then that instance is not checked during the remaining steps of the analysis.

maxvio_all

Limit the violation number to a specified value <value> for all the checked instances during the analysis.

group

Specify the group to which the assert belongs to. The default value is default.

extreme

When extreme=yes, it reports the extreme value of the boolean check assert. Possible values are yes and no. The default value is no.

safecheck

Specify the assert type for fault detection. When safecheck=func, it checks the functional module. safecheck=check checks the diagnostic module (checker). A functional safety report is generated for both func and check asserts. Set the value of the safecheck to none to perform regular assert checking. Possible values are none, func, and check. See Fault Analysis for more information on Spectre fault analysis.

skip_dev_inside_subckt

Skips subcircuits or device instances inside the subcircuit. For example, skip_dev_inside_subckt=[pll.M1 pll.inv1] will not perform assert check on the device model instance M1 and the subckt instance inv1 inside the subckt definition of pll.

max_peak

Specify the maximum threshold based on which the violation is reported.

max_peak does not impact the assertion check. It only limits the assert output report and reports only the violations that violate the assert and cross the max_peak limit.

min_peak

Specify the minimum threshold based on which the violation is reported.

min_peak does not impact the assertion check. It only limits the assert output report and reports only the violations that violate the assert and cross the min_peak limit.

The following table displays some ways to use the assert parameters.

# Assert parameters Description Applies to

1

dev=device or subckt instance
param=paramname

paramname can be an:
- Instance parameter
- Operating point parameter
- Netlist parameter
- Node voltage or device terminal current

For subcircuit instances, paramname can be a subcircuit parameter.

The specified instance.

2

mod=model param=paramname

paramname can be an:
- Instance parameter
- Operating point parameter

All instances of the specified model.

3

mod=model
modelparam=paramname

paramname must be a model parameter.

The specified model.

4

primitive=primitive
param=paramname

paramname can be an:
- Instance parameter.
- Operating point parameter

All instances of the specified primitive type.

5

primitive=primitive
modelparam=paramname

paramname must be a model parameter.

All models of the specified primitive type.

6

sub=subcircuit_master
dev=X1
param=
paramname

Device X1 over all instances of the specified subcircuit.
Same as row 1.

7

sub=subcircuit_master
mod=
model
param=paramname

All instances of the specified model over all instances of the specified subcircuit.
Same as row 2.

8

sub=subcircuit_master
mod=model
modelparam=paramname

The specified model over all instances of the specified subcircuit.
Same as row 3.

9

sub=subcircuit_master
primitive=primitive
param=paramname

All instances of the specified primitive over all instances of the specified subcircuit
Same as row 4.

10

sub=subcircuit_master
primitive=primitive
modelparam=paramname

All models of the specified primitive type over all instances of the specified subcircuit.
Same as row 5.

11

sub=subcircuit_master
param=paramname

paramname is a subcircuit parameter.

All instances of the subcircuit.

12

expr=mdl_expr

Valid conditional expression or combination of operating points.

Expression-specific instances, node voltages etc.

13

expr="mdl_expr"
min=value
max=value

The expression is evaluated and compared against the min and max values.

Expression-specific instances, node voltages etc.

If you define an assert statement within a subcircuit block without the sub parameter, the check is applied to that block only. If you use the sub parameter, the specified subcircuit master must be defined within the block.

You can use the defwave parameter to define a new waveform by relating previously defined waveforms and nodes and also specify the parameter in the assert statement as an expression. For example:

defwave comp1=v(1)-v(2)
defwave comp2=m1:vds + m1:vds + comp1
assert1 assert expr="comp1>0" info=yes level=warning message="v(1)>v(2) out of bound."
testdev22 assert expr="comp2 - m3:vds" min=0.0 max=1.0

The name of defwave should be different from instance parameters, model parameters, operating point parameters, netlist parameters, or subcircuit parameters. For example, consider M1 as an instance of an inline subcircuit mos_r, as shown below.

inline subckt mos_r (d g s b)
parameters p1=1u p2=2u
mos_r (dp g sp b) mos_mod l=p1 w=p2// "inline" component
rd (d dp) resistor r=10 // series drain resistance
rs (s sp) resistor r=10 // series source resistance
ends mos_r

In addition, consider the following assert statement:

defwave vds=v(d) - v(s)
assert2 assert expr="vds" sub=mos_r min=0.0 max=1.0 

Here, assert2 will check the oppoint parameter vds of mos_r that is different from terminal voltages (v(d) - v(s)) for subcircuit mos_r.

Violations are reported at the following three stages:

All assert statement violations are written to the Spectre log file by default, irrespective of the maxwarnstologfile and maxnotestologfile parameter settings. You can use the checklimitfile option to write the violations to a dedicated file. A message during simulation indicates where the violations are being written. For more information, see spectre -h options.

Examples of the assert Statement

Example 1

vtho_check assert primitive=bsim3 modelparam=vtho min=-0.2 max=0.2 
message=”vtho exceeds bound” level=warning

Checks for model parameter vtho over all device instances of the primitive type BSIM3 and prints a warning vtho exceeds bound if the value of vtho is less than -0.2 and higher than 0.2.

Example 2

m1vgs_check assert sub=inv dev=m1 param=vgs min=0.0 max=2.5 
message=”vgs exceeds bound” level=notice

Checks for operating point vgs in the device m1 over all instances of the subcircuit type inv in the netlist and prints a notice vgs exceeds bound if the value of vgs is less than 0 and higher than 2.5.

Example 3

Netlist:

subckt mysubckt a b c
parameters adNum=0.0
.......//contents of the subcircuit
ends mysubckt

Check defined for the above netlist:

adNum_check assert dev=X1 param=adNum min=0.0 max=5.0 
message=”Drain parasitic resistor is too high” level=warning

Checks the parameter adNum in the subcircuit instance X1 and prints a warning Drain parasitic resistor is too high if the value of adNum is higher than 5.0.

Example 4

Parameters p1=0.8
...
M1_powercheck assert expr="(max(m1:ids*m1:vds))" max=(p1*0.5e-3)" 
message=”power of M1 exceeds expected load power”

Checks that (max(m1:ids*m1:vds)) is less than (p1*0.5e-3). If not, it prints the warning power of M1 exceeds expected load power.

Example 5

MAX_powercheck assert expr="max(m1:pwr) < max(abs(vin:dc*I(r1)))"
message="power of M1 exceeds expected load power" boolean=false

Checks that maximum power max (m1:pwr) is less than max (abs(vin:dc*I(r1))). If not, it prints the warning power of M1 exceeds expected load power.

Example 6

voltage_check assert subs=[inv? dff*] dev=m1 expr="V(d,s)" min=0.0 max=2.5

Checks for voltage across terminals d and s of device m1 in all instances of subcircuits: whose names match dff* or inv? and prints a warning when the value of V(d,s) is less than 0 or higher than 2.5.

Example 7

Op_check assert mod=nch dev=m1 expr="vds" min=0.0 max=2.5 anal_types=[dc]

Checks for the operating point drain-source voltage in all instances of the model nch for DC and DC sweep analyses only, and prints a warning when the value of vds is less than 0 or higher than 2.5.

Example 8

boolean_check assert dev=I0 expr="Id=I(d); len=l; (I(d) >=2m) || (l > 1u)" anal_types=[dc tran] 

Checks for the boolean expressions I(d) >=2m or length > 1u in the instance I0 for DC, DC sweep and transient analyses only, prints a warning when the boolean expression is true, and returns the value of Id and len.

Example 9

cap_voltage_check assert primitive=capacitor expr="V(1)-V(2)" max=1

Checks for the voltage difference across the terminals of all capacitors and prints a notice if the value of V(1)-V(2) is higher than 1.

Example 10

current_check assert expr="I(I2:1)" max=1m message="test current!"

Checks for the current flowing through terminal I2:1 and prints a notice test current! if the value is larger than 1mA.

Example 11

Parameters bvca=9.1
...
Not_chk assert sub=in1 expr=" !(V(d,s) > (bvca-0.5))" level=notice message = "Testing Not!"

Checks the voltage across terminals d and s in the instances of subcircuit in1, and prints a notice Testing Not! when V(d,s) is not greater than (bvca-0.5).

Example 12

sub res n1 n2 n3
assert_i assert sub=res expr="V(index(2), index(1))" min=-1 max=1 level=warning

The above example checks index 2 - index 1 for subckt res which is equivalent to n2 - n1.

Example 13

subckt mysubckt1 D G S B
    MN0 (net5 G S B) my_nch w=(120n) l=45n 
    MN1 (D G net7 B) my_nch w=(120n) l=45n 
    MN2 (net7 G net6 B) my_nch w=(120n) l=45n 
    MN3 (net6 G net5 B) my_nch w=(120n) l=45n 
ends mysubckt1
I1 (D G S B) mysubckt1
stacked_device assert dev=I3 param=id max=-100

For the case with stacked FETs, Spectre now supports asserts to check for a violating device.

Example 14

assertAbsTime assert expr="abstime()" max=-1 info=yes

The above example checks the transient time and prints the value if it is greater than -1. For example, the above statement will print the following:

Warning from spectre at time = 4.122041315 ns during transient analysis ’trans’.
 WARNING (SPECTRE-4107): assertAbsTime: Instance, Expression ’abstime() has
value 4.122041315e-09
Warning from spectre at time = 7.596470186 ns during transient analysis ’trans’.
 WARNING (SPECTRE-4107): assertAbsTime: Instance, Expression ’abstime() has
value 7.596470186e-09
Warning from spectre at time = 11.7083856 ns during transient analysis ’trans’.
 WARNING (SPECTRE-4107): assertAbsTime: Instance, Expression ’abstime() has
value 11.7083856e-09
Warning from spectre at time = 19.92157532 ns during transient analysis ’trans’.
 WARNING (SPECTRE-4107): assertAbsTime: Instance, Expression ’abstime() has 
value 19.92157532e-09

Example 15

tran tran step=1e-12 pstep=1e-12 stop=2e-08
check_full_simu_tim assert message="CHECK_FULL_SIMU_TIME"
expr="full_simu_time=stoptime(); full_simu_time>10n"

The above example checks the transient stop time and prints a warning if it is greater than 10n. For example, the above statement will print the following:

Warning from spectre during transient analysis ’tran’.
WARNING (SPECTRE-4056): check_full_simu_time: CHECK_FULL_SIMU_TIME.
Expression ‘full_simu_time=stoptime(); full_simu_time>10n’ is getting true where full_simu_time=20e-09. Total duration of overshoot was 19.999e-09.

The check Statement

You can perform a check analysis by adding the check statement after the analysis statement in your netlist. The check analysis checks the values of the component parameters to be sure that the values of component parameters are reasonable. You can perform checks on input, output, or operating-point parameters. The Spectre simulator checks parameter values against parameter soft limits. For information on the default soft limits, see Customizing Error and Warning Messages

To use the check analysis, you must also enter the +param command line argument with the spectre command to specify a file that contains the soft limits.

The following example illustrates the syntax of the check statement. It tells the Spectre simulator to check the parameter values for instance statements.

ParamChk check what=inst

The what parameter of the check statement gives you the following options:

Option Action

none

Disables parameter checking

models

Checks input parameters for all models only

inst

Checks input parameters for all instances only

input

Checks input parameters for all models and all instances

output

Checks output parameters for all models and all instances

all

Checks input and output parameters for all models and all instances

oppoint

Checks operating-point parameters for all models and all instances

The checklimit Statement

You can enable or disable an assert or a group of asserts with the checklimit statement. You can define one or more checklimit statements in the netlist, each enabling or disabling individual asserts. The statement is applied to subsequent transient, DC, and DC sweep analyses until the next checklimit statement appears.

If there is no checklimit statement before all the analyses, a default checklimit statement enabling all asserts is added. In other words, by default, all asserts are enabled. The first checklimit statement that specifically enables asserts also disables the remaining asserts. The checklimit statements are cumulative in effect except when the checkallasserts parameter is specified. The subsequent checklimit statements disable the asserts specified in the disable parameter and then enable the asserts specified in the enable parameter based on the first checklimit statement. Note that you cannot disable the check on constant parameters that Spectre runs during initial setup.

When multiple checklimit statements refer to the same assert, the last checklimit statement overrides the previous statements.

The syntax for a checklimit statement is

Name checklimit [ enable=["check1" "check2" ... "checkn" ]]
[ disable=["check1" "check2" ... "checkn" ]]
[ start=value ][ stop=value ]
[ check_windows=[ start1 stop1 start2 stop2 ...] ]
[ boundary_type= time | sweep ]
[ severity= none | notice | warning | error | fatal ]
[ checkallasserts= yes | no ]
[ asserts=[assert1 assert2...] 
[ param= name[ 
[ value= value] ]
[ filter= none | progressive | extreme]

where

Name

Name of the checklimit statement.

enable=[ "check1" "check2" ... "checkn" ]]

Specifies the checks to be enabled. By default, all the checks are enabled. Wildcards are supported.

disable=[ "check1" "check2" ... "checkn" ]]

Specifies the checks to be disabled. By default, none of the checks are disabled. Wildcards are supported.

start=value

The beginning point at which the specified check is to be enabled or disabled.

stop=value

The end point at which the specified check is to be enabled or disabled.

check_windows=[ start1 stop1 start2 stop2 ...]

Time or sweep windows within which the assert is to be enabled or disabled. The boundary_type parameter determines whether the start and stop values apply to time or sweep.

Ensure that the array has an even number of values.

boundary_type= time | sweep

Determines whether the start and stop values for the check_windows parameter applies to time (used for transient analyses) or sweep (used for DC sweep and AC analyses).
Default: time

severity=none | notice | warning | error | fatal ]

Severity level of the message if the check fails. This overrides the severity levels specified for individual assert checks. If you set the severity to none, the severity level depends on the assert settings.
Default: none

The specified severity level cannot change the violation level for the checks done during the initial setup stage because no checklimit analysis is done during the initial setup stage.

checkallasserts=yes | no

Enables or disables all the assert checks in the netlist. This parameter is ignored if both the enable and disable parameters are specified.

asserts

Specify a group of asserts whose parameters (specified using the param parameter) and values (specified using the value parameter) need to be changed.

param

Specifies the parameter setting for an individual assert or a group of asserts specified using the asserts parameter.

If an assert has its own parameter setting, then its own setting is effective, otherwise, it uses the global parameter setting. See Example 2 below.

You can use the param parameter to change the value of the following parameters of the assert statement: max, min, check_windows, maxvio_perinst, maxvio_all, duration, level, extreme, and skip_dev_inside_subckt. Other assert parameters are not supported.

value

Specifies the value of the parameter (specified using the param parameter) for the assert (specified using the asserts parameter) that needs to be changed.

filter

Reduces the number of violations generated from an assert to the most significant ones. Possible values are none, progressive, and extreme. The default value is none.

When filter=none is specified, all violations are reported.

When filter=progressive is specified, a violation is generated for a given assert on a design instance, if any of the following condition is met:

  • its duration is longer than any previous duration
  • its absolute overshoot/undershoot is larger than any previous overshoot/undershoot
  • its area estimate (area estimate=duration*(overshoot/undershoot)”) is greater than any previous area estimate
The filter=progressive parameter only applies to simple asserts (for example, vgs>...) and not complex asserts (for example, vgs >... & vds>...).

When filter=extreme is specified, then, for a given assert on a design instance, the following is reported:

  • the top peak violation, the top duration violation, and the top area violation
  • For a one-sided assert (min or max), a maximum of three violations are reported
  • For a two-sided assert (min and max checking), a maximum of six violations are reported
  • If one violation has a max in peak and area, peak and duration, or area and duration, then, fewer violations are reported

For information on defining asserts, see The assert Statement.

Examples of checklimit Statement

Example1

This section displays the cumulative effect of the checklimit statements. By default, all asserts are enabled.

//assert1, assert2, assert3, assert4, and 
//Mychecklimit1 appear in include file “model1”
//assert5, assert6, and assert7, and Mychecklimit2
//appear in include file "model2"
//Mychecklimit3 and Mychecklimit4 appear in the netlist containing
//include files "model1" and "model2"
Mychecklimit1 checklimit disable=["assert2" "assert5"]

disables assert2 and assert5 and keeps assert1, assert3, assert4, assert6, and assert7 enabled. This condition remains in effect until the next checklimit statement is found.

Mychecklimit2 checklimit enable=["assert2" "assert6"] disable=["assert7"] start=1ns stop=5ns severity=warning

specifically enables assert2 and assert6 thereby disabling all the other asserts. assert2 and assert6 are run within 1ns and 5ns, and a warning is displayed if the asserts are violated.

Mychecklimit3 checklimit disable =["assert2"] start=5ns stop=10ns severity=none
dcOp dc

Now assert6 is checked within 5ns and 10ns. The severity level is disabled in this checklimit statement, so assert6 determines the severity level if this check is violated. The simulator runs the DC analysis and checks only assert6. Since this is a DC analysis, the start and stop parameters are ignored.

Mychecklimit4 checklimit checkallasserts=yes disable =["assert1"] 
start=1ns stop=10ns
tran1 tran stop=10ns

enables all asserts except assert1 and checks them within 1ns and 10ns.

Mychecklimit5 checklimit checkallasserts=no enable=[ "assert7" ] check_windows=[ 1 3 5 7 9 10 ] boundary_type=sweep
dcswp dc param=vdc start=1 stop=10 step=1

checks assert7 when the netlist parameter vdc is varied from 1 to 3, 5 to 7, 9 to 10 for the DC sweep analysis.

Mychecklimit6 checklimit checkallasserts=no enable=[ "assert3" "assert4" ] check_windows=[ 1n 3n 5n 7n 9n 10n ] boundary_type=time
tran1 tran stop=10ns

checks assert3 and assert4 from 1ns to 3ns, 5ns to 7ns, 9ns to 10ns for the transient analysis with stop time at 10ns.

Example2

set1 checklimit asserts=[ assert1  assert2  assert3] param=check_windows value=[0 20n]
set2 checklimit asserts=[ assert3  assert4  assert5] param=check_windows value=[20n 40n]
set3 checklimit checkallasserts=yes check_windows=[0n 30n]
set4 checklimit checkallasserts=yes check_windows=[10n 30n]

In the above example, the set1 checklimit statement sets the check_windows parameter for the asserts assert1, assert2, and assert3 to [0 20n]. The set2 checklimit statement sets the check_windows parameter for the asserts assert3, assert4, and assert5 to [20n 20n]. Note that the set2 checklimit statement will override the value of assert3 specified in the set1 checklimit statement. Therefore, the value of check_windows for assert3 will be [20n 40n].

The set3 checklimit statement sets the check_windows parameter for all asserts to [0n 30n] but the set4 checklimit statement overrides the set3 statement and sets the check_windows parameter for all asserts to [10n 30n].

If all the above checklimit statements are specified together, the check_windows setting for assert1 and assert2 will be [0 20n] and the check_windows setting for assert3, assert4, and assert5 will be [20n 40n]. The check_windows setting for all other asserts would be [10n 30n].

Global Options

You can customize the behavior of the assert, check, and checklimit statements by setting the following options in the options statement:

asserts_silent_init

Enables or disables printing of warning messages during initialization in the log file. You can selectively enable or disable warnings for different types of asserts.

For example, you can disable warnings from PDK assert when a PDK subckt is not placed in the schematic and enable the warnings for custom asserts.

Asserts in PDK (subckt) generate the following warnings whenever a PDK subckt is NOT placed in the schematic:

WARNING (SPECTRE-16460): assert_PDK:Specified subcircuit master `xxx was not found.
WARNING (SPECTRE-16462): assert_PDK:Error in specification of subcircuit master. Assert is ignored.

There can be thousands of such warning messages in the log file. You can disable these warnings from PDK assert by using this global option along with an assert name or a group name.

When multiple types of asserts are used, use the group parameter to distinguish PDK asserts from custom asserts.

The default value of group is default. Therefore, assert assert_PDK in the following example belongs to a group called default.

assert_PDK assert sub=xxx expr="v(1,0) >2.5" message="<<<<< PDK assert >>>>>" level=warning

The following example adds the assert_custom assert to a group called custom and enables warning messages.

assert_custom assert group=custom sub=res expr="V(in) >2.5" message="<<<<< custom assert >>>>>" level=warning
assert_1 assert group=pdk_other sub=inv expr="V(out) >2.5" message="<<<<< group=default assert >>>>>" level=warning
assert_2 assert group=pdk_other sub=inv expr="V(out) >2.5" message="<<<<< group=default assert >>>>>" level=warning

The global option asserts_silent_init can be used to the disable warning messages by group name or assert name. The following example disables warnings from assert_PDK and assert_1 during initialization.

opts options asserts_silent_init=[ "group=default" assert_1 ]
When using the group option, the value must be specified within double quotes because = is a meta character.

checklimit_skip_insts

Specifies the subcircuit instances that need to be skipped from assert verification. This option supports wildcards.

The following example skips subcircuit instance XINV1 during assert checking.

assertopt options checklimit_skip_insts=[XINV1]

checklimit_skip_insts_file

Specifies the name of the file that contains the names of the subcircuit instances to be skipped during assert checking. This option supports wildcards.

Example:

assertopt1 options checklimit_skip_insts_file=assert_skip.txt

checklimitdest

Specifies the destination where violations are to be written in the raw directory.

checklimitdest=file | psf | sqldb | both

The values for the checklimitdest option are described below.

Value Description

file

Writes the violations information to a file. You can use the checklimitfile option to specify the dedicated file name. If the checklimitfile option is not specified, by default, the violations are written to the Spectre log file.

psf

Writes the detailed violations information for each analysis type into the .violations and .sqldb files in the raw directory.

For example, the violations information for a transient analysis run is written to a tranViolations.violations file in the raw directory, DC analysis runs to a dcOpViolations.violations file, DC sweep analysis runs to a dcViolations.violations file, AC analysis run to a acViolations.violations file, and so on. For more information about the format of violations in the .violations file, see Format of Violations in the .violations File.

By default, the .violations file is created in the PSF binary format. Use the rawfmt=psfascii option to create the file in ASCII format.
Support for the psf option will be discontinued in a future release.

both

Writes the violations information to both file and .sqldb file in the raw directory.

sqldb

Writes the detailed violations information for each analysis type into a .sqldb file in the raw directory.

The default value for the checklimitdest option is sqldb.

For more information about the format of violations in the sqldb file, see Format of Violations in the sqldb File.

For assert level none, notice, or warning, the violations are written according to value specified for the checklimitdest option. However, for assert level error and fatal, the violation information is always written to a file regardless of the setting of the checklimitdest option.

Format of Violations in the .violations File

The following example of a violation written in the.violations file describes how you can find the instance name for which the violation is reported, the violation start value, margin value, violation start point, violation end point and violation status. Click on the links next to each line in the example for more information:

"check6.I1.Q0.violation1" "violation" <-- Violation name
-4.955361033925568e-02                <-- Violation Start Value
4.955361033925568e-02                 <-- Margin
1.237567063989001e-08                 <-- Violation Start Point
1.588944803644453e-08                 <-- Violation End Point
4.744540579920873e-02                 <-- Violation End Value
1.237567063989001e-08                 <-- Peak Step Value
-4.955361033925568e-02                <-- Peak Value
3.513777396554524e-09                 <-- Duration Value
0.000000000000000e+00                 <-- Minimum Bound Value
NaN                                   <-- Maximum Bound Value
-4.955361033925568e-02                <-- Average Value
) PROP(
"assert" "check6"
"instance" "I1.Q0"                      <-- Instance name
"model" ""
"severity" "warning"
"status" "failed"                     <-- Violation status

The description of the violation is given below.

Value Description

Violation Name

Name of the violation.

The violation name is written in the following format:

<assertName>.<instName>.violation<localNumber>

For example, in the violation name check1.M1.violation2,

  • check1 is assert name defined in the netlist.
  • M1 is the instance that violates the check.
  • violation2 is the second violation reported for check1 on instance M1.

Violation Start Value

The start value of a violation.

Margin

The difference between the violation start value and the min or max parameter values.

The margin value for a violation reported for a boolean expression assert will be NaN because the min and max parameters are ignored for boolean expression asserts.

Violation Start Point

The abscissa of violation start value.

Violation End Point

The abscissa of violation end value.

Violation End Value

The end value of a violation.

Peak Step Value

Time step during the peak value.

Peak Value

Peak value of the violation.

Duration Value

Time period of the violation.

Minimum Bound Value

Lower limit of the parameter value.

Maximum Bound Value

Upper limit of the parameter value.

Average Value

Average value of the violation.

Instance Name

The name of the instance that violates the check.

Violation Status

Violations with the failed status are written to the .violations file. A violation has a failed status if it violates the current analysis or is not processed because the level parameter in the assert statement or the severity parameter in the checklimit statement has the value error or fatal.

Format of Violations in the sqldb File

The following example of a violation written in the .sqldb file describes how you can find the instance name for which the violation is reported, the violation start time, violation start value, duration, end value, and violation end time.

% sqlite3 input.sqldb
% select * from assert_0View;

ID

=

1

ID of the assert violation

Checker Name

=

check6

Name of the assert

Instance

=

I1.Q0

Name of the instance

Model=nch

=

nch

Model name of the device

Start Value

=

-4.95536103392e-02

Start value of the violation

Margin=

=

4.95536103392e-02

Margin

StartTime (s)

=

1.23756706398e-08

Start time of the violation

Duration (s)

=

3.51377739655e-09

Duration of the violation

EndTime (s)

=

1.58894480364e-08

End time of the violation

EndValue

=

4.74454057992e-02

End value of the violation

AvgValue

=

-4.9553610339e-02

Average value of the violation

ViolationType

=

upper

upper when max value is violated and lower when min value is violated.

PeakStep

=

1.23756706398e-0

Time step at peak value

PeakValue

=

-4.9553610339e-02

Peak value

Dissatisfied

Contains part of the boolean assert expression which was dissatisfied

The detailed schema can be found at the following location:

<MMSIM_install_dir>/tools.lnx86/spectre/etc/ade/mmSQLSchema.sql

devcheck_stat

Specifies whether to display device-checking statistics on the terminal and added to the log file. By default, this option is set to none and statistics messages are not displayed. Set this option to inst or sub to display statistics messages while keeping the checks on.

Possible values for this option are:

For example, when devcheck_stat=inst, Spectre displays the following device-checking statistics before the analysis:

The following asserts will be enabled for all subsequent analyses until the next checklimit analysis statement is found:
assert1 : ON
X1.assert2 : ON
X1.assert3 : ON
X2.assert2 : ON
X2.assert3 : ON

Consider X1 and X2 are instance of subckt sub1. When devcheck_stat=sub, the following statistics will be printed:

The following asserts will be enabled for all subsequent analyses until the next checklimit analysis statement is found:
assert1 : ON
X1.X2:assert2 : ON

You can disable the display of these statistics by setting devcheck_stat to none.

expr_reltol

Defines the relative tolerance for expressions. The default value of expr_reltol is 1e-12. Set this option in scenarios when the evaluation of equations that compare numbers may generate wrong results because the simulator introduces numerical noise.

For example, the following assert statement checks for the device length l of 6nm. However, if l is stored with the value 5.99999999999 in the simulator database, the assert is not be triggered.

check_l assert primitive=nmos expr="(l==6n)" level=warning

Example:

opt1 options expr_reltol=1e-12

mod_assert_expand_sub

Specifies whether to automatically detect the mod or sub usage for the model card and subcircuit.

Spectre asserts use the mod=nch parameter to apply asserts to devices with the device model name nch. By default, the mod parameter does not apply to device model subcircuit or inline subcircuit names. You can set the value of the mod_assert_expand_sub netlist option to yes so that Spectre assert automatically detects the mod or sub usage for the model card and subcircuit.

opt1 options mod_assert_expand_sub=yes 

With the mod_assert_expand_sub option set to yes, the mod parameter is applied to the device model or inline subcircuit names if no model statement with the specified name is found.

assert_mod mod=nch expr="V(inm)" max=-100

A warning is generated if nch is not a model or a subcircuit name.

wfdebug

Specifies whether to store all time-varying current (R1:in) and voltage (M1.d) waveforms used in an assert expression. Differential voltages like V(d,s) used in asserts are saved as individual voltage signals V(d) and V(s).

Spectre starts saving a waveform only when the assert criteria is satisfied.

When the waveform writing is enabled, it remains enabled till the simulation ends. For any assert without violation, no waveform is saved. For large designs and many asserts, the wfdebug=assert option may save a large number of waveforms, which may significantly degrade Spectre performance.

Any expression using the avg() and rms() functions will only be triggered at the end of transient analysis. There is no violation during transient analysis. Therefore, the related signal will not be saved because wfdebug will not know until at the end of transient analysis if violation criteria is satisfied or not.

For example:

assertopt options wfdebug=assert

Circuit Checks

Circuit checks enable you to analyze typical design problems, such as high impedance nodes, leakage paths between power supplies, timing errors, power issues, connectivity problems, or extreme rise and fall times. They can be separated into dynamic and static checks. Dynamic checks are performed during transient analysis. Static checks are topology checks which do not require any simulation.

Circuit Check Scoping

Most circuit checks can be applied either globally to the entire design, or locally to specific blocks of a design. The scoping options are available to define the scope of each circuit check. The circuit checks can be applied to a specific subcircuit instance (inst), or to all instances of a subcircuit definition (subckt). Exclusion of a specific subcircuit instance (xinst), or all instances of a subcircuit (xsubckt) is supported. All scoping options support wildcards, and the hierarchy level of the scope can be defined by the depth option.

node

Non-hierarchical node name. Default is none.

net

Hierarchical node names between which leakage path is checked. Wildcards are not supported. Default is none.

dev

Non-hierarchical element name. Default is none.

model

Non-hierarchical model name. Default is none.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

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

Combination of inst/xinst and subckt/xsubckt is not allowed.

Following wild cards are allowed for node, dev, model, inst, xinst, subckt, and xsubckt:

Depth and inst/subckt Scoping

When using a combination of the inst/subckt scoping with wildcarding and the depth option, the following rules apply:

Circuit Check Scoping Examples

...node=[*] inst=[*] depth=3

Matches any node on the top four hierarchy levels of the design (top + 3 levels)

...node=[*] inst=[x1]

Matches any node inside the subcircuit instance x1 and its child instances

...node=[*] inst=[x1.*]

Matches any node which is part of the child instances of x1, but not nodes inside x1 itself

...node=[n1*] inst=[x1.x2] xinst=[x1.x2.x3]

Matches x1.x2.n11, x1.x2.x4.n12, x1.x2.x4.x5.x6.n15

Does not match x1.x2.x3.n12, x1.n1

...dev=[R*] inst=[x1 x2.x3] depth=3

Matches x1.R5, x1.x2.R19, x1.x2.x3.R88

Does not match R15, x1.x2.x3.x4.R12, x2.x3.x5.x6.R9

...model=[nf pf] inst=[x1.x2]

Matches any model instantiation of nf and pf inside x1.x2.

...node=[*] subckt=[pll] xsubckt=[vco]

Matches all nodes inside all instances of the pll subcircuit, except the nodes inside the instances of the vco subcircuit.

...node=[*] inst=[x1.x2] subckt=[vco]

Combination of inst and subckt is not allowed.

...node=[*] inst=[x1.x2] xsubckt=[vco]

Combination of inst/xsubckt, or combination of subckt/xinst is not allowed.

Specifying the Output Format for the Checker Violation Report

To specify the output format for the checker violation reports:

All the reports are saved in the raw directory.

Examples:

Spectre syntax to specify the output format:

opt options check_format=text 

SPICE syntax to specify the output format:

.option check_format=text 

Circuit Check SpiceVision PRO Integration

The dynamic and static circuit checks report design errors on circuit nodes, devices, and elements. A SpiceVision PRO integration is available that enables you to quickly browse the schematic for nodes, devices, and elements reported in the design check error report. SpiceVision PRO, a product of Concept Engineering GmbH, reads the SPICE or Spectre netlists and generates clean, easy-to-read transistor-level schematics, and circuit fragments to speed up circuit debugging. Use the workshop database located under <MMSIM>/tools.lnx86/SpiceVision to learn more about the integration. The integration requires a SpiceVision PRO license which can be obtained from Concept Engineering GmbH.

MonteCarlo Sweep and Alter Support in Dynamic Checks

Dynamic design checks support multiple simulations due to MonteCarlo, sweep, and alter. The design check is applied to each individual MonteCarlo, sweep, and alter simulation. Following are the limitations:

Changing Default Value of Parameters

Most circuit check parameters have an associated default value. To change the default value, you need to specify a different value for the parameter in the circuit check statement. However, if you want to a use a different default value for a parameter every time you run a circuit check, specify the value in a file and use the +paramdefault <filename> command-line option to enable Spectre to read and apply the default values from the specified file.

Here, <filename> is the name of the file containing the default value of parameters. The file should only contain the primitive circuit check name, parameter name, and the parameter value in one line. For example:

dyn_floatdcpath ith 1n
static_highz vnth 0.3

For more information, see Specifying Parameter Defaults in a File.

Circuit Check Syntax

All circuit checks follow Spectre syntax and can be written only in Spectre syntax (not SPICE syntax). Therefore, you must follow the syntax rules that apply to Spectre (see Basic Syntax Rules). If using design checks in a SPICE format netlist, you must specify simulator lang=spectre before any circuit check statement (see Spectre Language Modes). For example, the following is the syntax for the dyn_highz check in Spectre format with line continuation:

simulator lang=spectre
chk1 dyn_highz node=[*] inst=[alpha beta gamma pll]

A mathematical expression can be used by encapsulating the expression in round brackets (Expressions). You can also use .PARAM in the mathematical statements. For example:

simulator lang=spice
.param PER = 50n
simulator lang=spectre
parameter NUM = 10
dcpath1 dyn_dcpath duration=(1n+PER/2) time_window=[0n (NUM*PER/2)] ….

The rules of referencing SPICE syntax in the circuit check statements are the same as referencing SPICE syntax in Spectre save statement. For example:

simulator lang=spice
r1 node<1> node[2] 1k
simulator lang=spectre
save node\<1\>
save node\[2\]
chk1 dyn_highz node=[node\<1\>] ….
Chk2 dyn_subckpwr port=[AD\[1\]] …

Dynamic Checks

Dynamic checks are performed during transient simulation and are dependent on the stimuli. The checks use the dyn_ prefix as part of the circuit check keyword, and write the report into a file with the extension .dynamic.xml. The xml file can be viewed with any Web browser.

The following table lists the checks that are supported in Spectre®, Spectre® APS, Spectre X, Spectre® XPS SPICE mode, Spectre® XPS FastSPICE mode, and Spectre® MS mode (see Chapter 4, “The Spectre XPS Circuit Simulator”):

Table 16-1 Dynamic Checks Supported in Various Modes

Name Spectre, Spectre APS, Spectre X Spectre XPS SPICE Spectre XPS FastSPICE (SRAM, DRAM, Flash) Spectre MS

Dynamic High Impedance Node Check

Yes

Yes

Yes

Yes

Dynamic DC Leakage Current Path Check

Two approaches. See Transient and Leakage Analysis Based Approaches

Dynamic Floating Gate Induced Leakage Path Check

Two approaches. See Transient and Leakage Analysis Based Approaches

Dynamic MOSFET Voltage Check

Yes

Yes

Yes

No

Dynamic Resistor Voltage Check

No

No

Yes

No

Dynamic Capacitor Voltage Check

No

No

Yes

No

Dynamic Diode Voltage Check

No

No

Yes

No

Dynamic Excessive Element Current Check

Yes

Yes

Yes

No

Dynamic Excessive Rise and Fall Time Check

Yes

Yes

Yes

No

Dynamic Glitch Check

Yes

Yes

Yes

No

Dynamic Setup and Hold Check

Yes

Yes

Yes

No

Dynamic Noisy Node Check

Yes

Yes

Yes

No

Dynamic Node Capacitance Check

Yes

Yes

Yes

No

Dynamic Subcircuit Port Power Check

Yes

Yes

Yes

Yes

Dynamic Pulse Width Check

Yes

Yes

Yes

No

Dynamic Power Density Check

Yes

Yes

Yes

No

Dynamic Active Node Check

Yes

Yes

Yes

No

Dynamic Subcircuit Instance Activity Check

No

No

Yes

No

Dynamic Subcircuit Port Voltage/Current Check

No

No

Yes

No

Dynamic Delay Check

Yes

Yes

Yes

No

Dynamic Floating Node Statistical Check

Yes

No

No

No

Dynamic Uninitialized Check

No

No

Yes

No

Dynamic High Impedance Node Check

Syntax

title dyn_highz  node=[n1 n2 ...] duration=<value> time_window=[start1 stop1 start2 stop2 ....] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value> rest_th_va=<value> res_th=<value> isource_ith=<value> bjt_vbe=<value> bjt_ith=<value> diode_vth=<value> <inverse=no|yes> <sort=no|duration] <fanout=all|gate|bulk|gate_has_driver_no_moscap|gate_no_moscap> <filter=[no|rc]> <xnode=[node1 node2...]> xnode_file=<value> <nonconducting_subckt=[subckt1 subckt2...]> <conducting_subckt=[subckt1 subckt2...]> <debug_net=[net1 net2...]> <debug_time=[t1 t2..]> <debug_format=txt|sql|both> <debug_report=lowz|highz|both>

Description

Reports the nodes that are in high impedance state (also known as floating) for a duration longer than the user-defined threshold. A high impedance state occurs when there is no conducting path from the node to any power supply or ground.

The following device conditions are used:

The results are written to the dynamic.xml file, which can be viewed in a Web browser.

Arguments

Design Check Parameters

node

A space-separated list of names of the nodes to which the check is applied. Default is none. Wildcards are supported.

xnode

A space-separated list of names of the hierarchical nodes to be excluded from the check. Default is none. Wildcards are supported.

xnode_file

File containing the names of the hierarchical nodes that need to be excluded from the check. Wildcards are not supported. Default is none.

duration

HighZ states with a duration longer than value are reported (default is 5ns).

bjt_vbe

BJT vbe conducting threshold. Default is 0.4V.

bjt_ith

BJT ith conducting threshold. Default is 50nA.

res_th_va

Verilog-A resistor conducting threshold for high impedance node detection. This parameter is applicable only on AMS ie element, and on one or two-port AHDL module. Default is 10 MOhms.

res_th

Resistor conducting threshold. Default is 1TOhms.

isource_ith

Current source conducting threshold. Default is 1pA.

diode_vth

Diode voltage conducting threshold. Default is 0.6V.

inverse

If set to no, reports all nodes that are in highz state. If set to yes, reports all nodes that are not in highz state. Possible values are no and yes. Default is no.

sort

Sort the violations. If set to no, no sorting is performed. If set to duration, violations are sorted based on duration. Possible values are no and duration. The default value is no.

debug_net

Hierarchical nets to debug. Wildcard is not allowed. Default is none.

This option is supported only in Spectre, Spectre APS, Spectre X, and Spectre XPS SPICE mode.

debug_time

Time points at which the debug report is generated. Default is none.

This option is supported only in Spectre, Spectre APS, Spectre X, and Spectre XPS SPICE mode.

debug_format

When debug_format=txt, the report is written to the <netlistName>_<checkName>_<debug_time>.report.log file in text format. The report contains all conducting paths from a debug net to ground causing the debug net to be a lowz node. The report also contains information about all devices that are off causing a debug net to be highz.

When debug_format=sql, the report is written in xml/sql format. The report, in this case, only contains all conducting paths from a debug net to ground causing the debug net to be a lowz node.

When debug_format=both, the report is written in all formats.

Possible values are sql, txt,and both. Default is txt.

This option is supported only in Spectre, Spectre APS, Spectre X, and Spectre XPS SPICE mode.

debug_report

When debug_report=lowz, only lowz nodes are reported and the report contains all conducting paths from debug_net to ground, causing debug_net to be a lowz node.

When debug_report=highz only highz nodes are reported and the report contains all devices that are off, causing debug_net to be highz.

When debug_format=both, both lowz and highz nodes are reported.

Possible values are lowz, highz, and both. The default value is both.

This option is supported only in Spectre, Spectre APS, Spectre X, and Spectre XPS SPICE mode.

Filtering Parameters

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

error_limit

Maximum number of errors to be reported. Default is 10000.

fanout

Fanout setting to filter node with specified connection. When fanout=gate_has_driver_no_moscap, floating nodes only connecting to MOSCAPs will not be checked. When fanout=gate_no_moscap, gates only connecting to MOSCAPs will not be checked. Possible values are all, gate, bulk, gate_has_driver_no_moscap, and gate_no_moscap.

Default is all.

filter

If set to no, filtering is not performed. If set to rc, dyn_highz checks only one node in the same parasitic sub. This option is supported only in Spectre XPS FastSPICE mode. Possible values are no and rc. The default value is no.

Wildcard Scoping

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

nonconducting_subckt

All instances of specified subcircuit are considered non-conducting during the floating node detection. All devices inside the subcircuit are considered non-conducting during the floating node detection. Wildcard is supported. Default is none.

This option is supported only in Spectre, Spectre APS, and Spectre X.

conducting_subckt

All instances of specified subcircuit are considered conducting during the floating node detection. All devices inside the subcircuit are considered conducting during the floating node detection. Wildcard is supported. Default is none.

This option is supported only in Spectre, Spectre APS, and Spectre X.

nonconducting_primitive=[...]

All instances of specified primitive or VerilogA modules are considered non-conducting during the floating node detection. Wildcard is supported. Default is none.

Example

hz1 dyn_highz node=["*"] duration=2e-09 time_window=[1e-09 1e-08]

The above command will report all nodes that were in a high impedance state for a duration longer than 2e-09s within the time window between 1e-09s and 1e-08s. The following is an example of the report that is displayed in the Web browser:

Dynamic DC Leakage Current Path Check

Syntax

title dyn_dcpath net=[n1 n2 ...] duration=<value> ith=<value> time_window=[start1 stop1 start2 stop2 ....] <leaki_times=[t1 t2 …]> <xinst=[xinst1 xinst2...]> error_limit=<value> <sort=no|current>

Description

Reports the conductance paths between user-specified nets. This check can be used in two ways. One is based on transient-analysis and the other is based on leakage analysis. The check based on transient analysis reports qualifying paths carrying an absolute current higher than the parameter ith for a duration longer than the specified duration, within the specified time_window. The check based on leakage analysis reports qualifying paths carrying an absolute current higher than the parameter ith at specified leaki_times. leaki_times should be carefully selected in standby or power-down mode (see XPS SRAM Leakage Current Simulation). Both methods cannot be used in one check statement. If you specify both methods in one check statement, then leakage analysis gets higher priority than transient analysis.

The following table shows the Spectre modes in which the two methods are supported.

Table 16-2 Transient and Leakage Analysis Based Approaches

Method Spectre, Spectre APS, Spectre X Spectre XPS SPICE Spectre XPS FastSPICE (SRAM, DRAM, Flash) Spectre MS

DC Leakage Current Path Check based on transient analysis

Yes

Yes

Yes

Yes

DC Leakage Current Path Check based on leakage analysis

Yes

Yes

Yes

No

If more than two nets are specified, Spectre checks the leakage path between each net combination. For example, if net=[vdc1 vdc2 0] is specified, then the conducting path between vdc1 and vdc2, vdc1 and 0, and vdc2 and 0 is checked.

High accuracy settings are recommended when using the Spectre XPS FastSPICE solver (+cktpreset=sram_pwr).

The results are written to a file with the extension dynamic.xml.

The dyn_dcpath report can also list the iprobes added by the simulator. You can set the global option check_dcpath_igniprobes=yes to include the iprobes in the report. Only the iprobes added by the simulator (through save statement or options statement) are controlled by the check_dcpath_igniprobes option.

By default, bulk current through the MOSFET is not traced. You can set the global option dcpath_bulk_current=yes to trace the bulk current.

Arguments

net

Hierarchical node names between which the leakage path is checked. Wildcarding is not allowed. All combination of nets are checked. Default is none.

duration

Leakage paths with a duration longer than specified value are reported (default is 5ns).

sort

If set to no, sorting is not performed. If set to current, the violations are sorted by max current. Possible values are no and current. The default value is no.

ith

Leakage paths with absolute current higher than the specified value are reported (default is 50uA).

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

leaki_times

Defines the times at which the check is performed. This option is supported only in Spectre, Spectre APS, Spectre X, Spectre XPS SPICE, and Spectre XPS FastSPICE. It is not supported in Spectre MS.

xinst

Subcircuit instances to be excluded from the check. Default is none.

This parameter is supported only in Spectre XPS FastSPICE mode.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example 1

dcpath1 dyn_dcpath ith=200u net=[vdd 0] duration=1n time_window=[1n 20n]

The above command will report the DC conductance path between vdd and 0. The command will report the paths that carry current higher than 200u for a duration longer than 1n within the time window between 1n and 20n. The following is an example of the report that is displayed in the Web browser:

The path report has three sections. Each section is explained below.

Similar to xml report, the text report is shown below:

Example 2

dcpath2 dyn_dcpath ith=200u net=[vdd 0] leaki_times=[12.5n]

The above command will report the DC conductance path between vdd and 0. The command will report the paths that carry current higher than 200u based on the leakage analysis done at time 12.5ns. In the report, Total Current is the summation of all branch currents exiting from the net vdd. The following is an example of the report that is displayed in the Web browser:

Since this check is based on leakage analysis, the name of table is Dynamic dcpath check based on leaki analysis.

Dynamic Floating Gate Induced Leakage Path Check

Syntax

title dyn_floatdcpath net=[n1 n2 ...] node=[n1 n2...] xnode=[n1 n2...] <leaki_times=[t1 t2 …]> duration=<value> error_limit=<value> time_window=[start1 stop1 start2 stop2 ....] res_th_va=<value> res_th=<value> isource_ith=<value> bjt_vbe=<value> bjt_ith=<value> diode_vth=<value> <floatgate=[yes|no|gate_has_driver_no_cap]> <filter=[no|rc]> <detailed_path=[yes|per_fm|per_fn]> <sort=[no|current]> numprocesses=<value> <distribute=[no|fork]> ith=<value> <sweep=[no|single|all|all_once] points=<value> vmin=<value> vmax=<value> rforce=<value> time_window=[start1 stop1 start2 stop2 ....] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <nonconducting_subckt=[subckt1 subckt2...]> <conducting_subckt =[subckt1 subckt2...]> <float_vpn=[vpn1 vpn2...]> <debug_net=[net1 net2...]>

Description

Reports the DC leakage paths that are caused by floating gate. This check can be used in two ways. One is based on transient analysis and the other is based on leakage analysis. Both methods cannot be used in one check statement. If you specify both methods in one check statement, then, leakage analysis gets higher priority than transient analysis.

The following table shows the Spectre modes in which the two methods are supported:

Table 16-3 Transient and Leakage Analysis Based Approaches

Method Spectre, Spectre APS, Spectre X Spectre XPS SPICE Spectre XPS FastSPICE (SRAM, DRAM, Flash) Spectre MS

Dynamic Floating Gate Induced Leakage Check based on transient analysis

Yes

Yes

No

No

Dynamic Floating Gate Induced Leakage Check based on leakage analysis

Yes

Yes

Yes

Yes

The two methods are explained below.

Transient-based Method

The check based on transient analysis is evoked when parameters time_window or/and duration are specified. It reports the qualifying paths carrying an absolute current higher than the parameter ith for a duration longer than the specified duration (duration), within the specified time window (time_window). This qualifying path must also have a MOSFET with gate floating for duration longer than the specified duration (duration), within the specified time window (time_window). The violations are a union of dyn_highz and dyn_dcpath, if you use the same setting. This methodology does not generate the worst case leakage path. If the settings of dyn_dcpath and dyn_floatdcpath are same, the violations of dyn_floatdcpath will be a subset of dyn_dcpath. The following parameters are irrelevant: vmin, vmax, points, rforce, leaki_times, sweep, floatgate, detailed_report, debug_net, distribute, and numprocesses. The floating node detection is similar to dyn_highz and the path detection is similar to dyn_dcpath.

Leakage Analysis-based Method

The check based on leakage analysis is evoked when parameter leaki_times is specified. leaki_times should be carefully selected in standby or power-down mode (see XPS SRAM Leakage Current Simulation). The check is performed at specified times (leaki_times) of a transient simulation. Floating nodes and MOSFET devices with floating gates are detected. Potential leakage paths (sweep=no) or worst leakage paths (sweep=all|single|all_once) caused by floating gate MOSFET devices are reported. The leakage paths are checked between the specified power supply nodes (net). The floating node detection and path detection in the leakage analysis based method are explained below:

Floating node detection (leaki_times)

A node is considered floating (or in high impedance state) if it has no conducting path to a power supply or ground. A report of all MOSFETs with floating gates can be printed by using the parameter floatgate. The following device conducting rules are used for floating node detection:

Path detection (leaki_times)

Once the floating nodes are identified, the leakage paths caused by the floating nodes need to be detected. You can use the current-based method or the conducting-rule-based method to detect the leakage path.

When the sweep parameter is set to single, all, or all_once, the leakage path detection is based on current. In the current-based path detection method, floating node voltage is swept, and the current in the path is measured. After the measurement, the current-based method reports the qualifying paths carrying an absolute current higher than the parameter ith. Either all floating nodes are swept at once (sweep=all), or each floating node is swept individually (sweep=single). The following parameters are relevant to the current-based path detection method: vmin, vmax, points, and rforce.

When the sweep parameter is set to no, the leakage path detection is based on following conducting rules:

The following parameters are irrelevant with sweep=no: vmin, vmax, points, and rforce.

If more than two nets are specified, then Spectre checks the leakage path between each pair of nets. For example, if net=[vdc1 vdc2 0] is specified, then the conducting path between vdc1 and vdc2, vdc1 and 0, and vdc2 and 0 is checked.

Higher accuracy settings are recommended when using the Spectre XPS FastSPICE solver (+cktpreset=sram_pwr).

For Spectre MS mode, the results of the check are written to a file with the extension dynamic.leaki_<leaki>.xml, where <leaki> is the leaki_times specified in the check statements. For example, for leak_times=[7.5n], two files will be generated; a regular file with the extension dynamic.xml and a dyn_floatdcpath file with extension the extension dynamic.leaki_7.5e-9.xml.

For Spectre, Spectre APS, Spectre X, Spectre XPS SPICE, and Spectre XPS FastSPICE, the results of the check are written to a single file with the extension dynamic.xml.

The dyn_floatdcpath report can also list the iprobes added by the simulator. You can set the global option check_dcpath_igniprobes=yes to include the iprobes in the report. Only the iprobes added by the simulator (through save statement or options statement) are controlled by the check_dcpath_igniprobes option.

By default, bulk current through the MOSFET is not traced. You can set the global option dcpath_bulk_current=yes to trace the bulk current.

Arguments

leaki_times

Defines the times at which the check is performed.

duration

Leakage paths with a duration longer than the specified value are reported. Default value is 5ns.

This option is supported only in Spectre, Spectre APS, and Spectre X.

time_window

The time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

error_limit

Maximum number of errors to be reported. Default is 10000.

Floating node detection parameters

bjt_vbe

BJT vbe conducting threshold for high impedance node detection. BJT is conducting if i>bjt_ith or vbe>bjt_vbe. Default is 0.4V.

bjt_ith

BJT ith conducting threshold for high impedance node detection. BJT is conducting if i>bjt_ith or vbe>bjt_vbe. Default is 50nA.

res_th_va

Verilog-A resistor conducting threshold for high impedance node detection. This parameter is applicable only on AMS ie element, and on one or two-port AHDL module. Default is 10 MOhms.

res_th

Resistor conducting threshold for high impedance node detection. Resistor is conducting if R<res_th. Default is 1TOhms.

diode_vth

Diode voltage conducting threshold for high impedance node detection. Diode is conducting if v>diode_vth. Default is 0.6V.

isource_ith

Current source conducting threshold for floating node detection. Current sources are conducting if i>isource_ith. Default is 1pA.

mos_conduct_rule

The conducting rule to decide whether a MOSFET is conducting or not.

Possible Values:

  • tri_sat: Specifies that a MOSFET is conducting when region is either triode or saturation.
  • tri_sat_sub: Specifies that a MOSFET is conducting when region is either triode, saturation, or subthreshold.
  • ids_gds: Specifies that a MOSFET is conducting when ids>mos_ith or gds>mos_gds, where mos_ith and mos_gds are check parameters.
  • vgs: Specifies that a MOSFET is conducting when vgs>vth (Only supported in XPS Fastspice).

The region, ids, gds and vgs are oppoint parameters of MOSFET.

Default is tri_sat.

debug_net

Hierarchical nets to debug. Wildcard is not allowed. Default is none. The debug report is generated at leaki_times.

nonconducting_subckt

All instances of specified subcircuit are considered non-conducting during the floating node detection. All devices inside the subcircuit are considered non-conducting during the floating node detection. Wildcard is supported. Default is none.

This option is supported only in Spectre, Spectre APS, Spectre X, and Spectre MS.

conducting_subckt

All instances of specified subcircuit are considered conducting during the floating node detection. All devices inside the subcircuit are considered conducting during the floating node detection. Wildcard is supported. Default is none.

This option is supported only in Spectre, Spectre APS, Spectre X, and Spectre MS.

nonconducting_primitive=[...]

All instances of specified primitive or VerilogA modules are considered non-conducting during the floating node detection. Wildcard is supported. Default is none.

nonfloat_vpn=[...]

All specified vpn(s) will be marked as non-floating nodes during floating node detection. Wildcard is not allowed. Wildcard is not allowed. Default is none.

This option is supported only in Spectre XPS FastSPICE mode.

float_vpn

All channel connections of the specified VPN or VPNs are marked as floating nodes during floating node detection. Wildcard is not allowed. Default is none.

This option is supported only in Spectre XPS FastSPICE mode.

Floating node detection filtering parameters

floatgate

Specifies whether to report all MOSFETs with floating gate at specified leaki_times. If set to gate_has_driver_no_moscap, floating MOSCAPs are not reported. The value gate_has_driver_no_moscap is supported only in Spectre XPS FastSPICE mode. If set to yes, all MOSFETs with floating gates at the specified leaki_times are reported. If set to no, then the report is not generated. Default value is no. Possible values are: no, yes, and gate_has_driver_no_moscap.

filter

If set to no, filtering is not performed. If set to rc, dyn_floatdcpath checks only one node in the same parasitic sub. This option is supported only in Spectre XPS FastSPICE mode. Possible values are no and rc.

node

Nodes to which the floating node detection is applied. This parameter is not supported in Spectre XPS FastSPICE. Default is all (node=*).

xnode

Nodes that are excluded from floating node detection. This parameter is not supported in Spectre XPS FastSPICE. Default is none.

inst

Subcircuit instances to which the floating node detection is applied. This parameter is not supported in Spectre XPS FastSPICE. Default includes all instances (inst=*).

xinst

Subcircuit instances to be excluded from the floating node detection. This parameter is not supported in Spectre XPS FastSPICE. Default is none.

subckt

The instances of the specified subcircuit to which the floating node detection is applied. This parameter is not supported in Spectre XPS FastSPICE. Default includes all subcircuits (subckt=*).

xsubckt

The instances of the specified subcircuits that are excluded from the floating node detection. This parameter is not supported in Spectre XPS FastSPICE. Default is none.

Path detection parameters

net

Hierarchical node names between which the leakage path is checked. Wildcarding is not allowed. All combination of nets are checked. Default is none.

sweep

If set to no, no DC sweep is performed and leakage path is based on conducting rules. If set to single, each floating node is swept one at a time and the leakage paths more than ith are reported. If set to all, all floating nodes are swept together and the leakage paths more than ith are reported. If set to all_once, voltage of gates connected to NMOS is set to VDD, voltage of gates connected to PMOS is set to 0, voltage of gates connected to both NMOS and PMOS is set to VDD/2, and leakage paths more than ith are reported.

The default is all in Spectre, Spectre APS, Spectre X, Spectre XPS Spice and Spectre MS and no in Spectre XPS FastSPICE. The option all_once is supported only in Spectre XPS FastSPICE. The option single is not supported in Spectre XPS FastSPICE.

ith

Leakage paths more than ith will be reported. This option is applicable only with sweep=single, sweep=all, and sweep=all_once. The default value is 50uA. This option is supported only in Spectre, Spectre APS, and Spectre X.

points

Number of sweep points, applicable to both sweep=single and sweep=all. The default value is 3.

This option is supported only in Spectre, Spectre APS, Spectre X, and Spectre MS.

vmin

Minimum voltage for sweep=single and sweep=all. If specified, the voltage sweep will start from the specified vmin voltage. If not specified, minimum voltage in the design will be used. Default is none.

This option is supported only in Spectre, Spectre APS, Spectre X, and Spectre MS.

vmax

Maximum voltage for sweep=single and sweep=all. If specified, the voltage sweep will stop at the specified vmax voltage. If not specified, maximum voltage in the design will be used. Default is none.

This option is supported only in Spectre, Spectre APS, Spectre X, and Spectre MS.

rforce

Change the rforce value only for sweep=single and sweep=all. The default value is 500M.

This option is supported only in Spectre, Spectre APS, Spectre X, and Spectre MS.

numprocesses

Number of processes to use for distributed analysis.

distribute

Distribute method to use. Currently, it is supported only for sweep=single. Possible values are no, fork, lsf, and sge.

Path detection filtering parameters

detailed_path

If set to yes, prints the detailed path. Default is per_fm, which prints one path per floating MOSFET. If set to per_fn, print one path per floating node. Possible values are per_fm, yes, and per_fn. The per_fn value is not supported in Spectre XPS FastSPICE.

sort

Sort the violations. If set to no, sorting is not performed. If set to current, dyn_floatdcpath sorts the violations based on maximum current. Possible values are no and current. Default value is no.

Example 1

dyn1 dyn_floatdcpath net=[vdd 0] leaki_times=[7.5n]

The above command will report the high impedance node induced DC leakage paths between the nets vdd and 0 at the specified leaki times (based on leakage analysis). The following is an example of the report that is displayed in the Web browser:

This path report contains the following three sections:

Example 2

dyn3 dyn_floatdcpath net=[vdd2 0] duration=1n ith=1u time_window=[0n 20n]

The above command will report the high impedance node induced DC leakage paths between the nets vdd2 and 0. The command will report the paths that carry current higher than 200u for a duration longer than 1n within the time window between 1n and 20n.The following is an example of the report that is displayed in the Web browser:

Since this check is based on transient analysis, the name of table is Dynamic Floating Node Induced DC Leakage Path Check based on transient analysis.

Dynamic MOSFET Voltage Check

Syntax

title dyn_mosv model=[m1 m2 ...] cond=<expression> <sample=extreme|start> duration=<value> <sort=[no|duration]> time_window=[start1 stop1 start2 stop2 ....] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value>

Description

Reports MOSFET devices fulfilling the conditional expression on device voltages and device size (w, l) for a duration longer than the user-defined duration threshold (duration).

Supported MOSFET variables are: v(g,s), v(g,d), v(g,b), v(d,s), v(d,b), v(s,b), v(g), v(d), v(s), v(b), l, and w.

Supported operators are: +, -,*, /, ==,!=, <, <=, >, >=,||, &&, and !.

When sample is set to extreme, the extreme value of voltage function is reported. If the expression contains > or >=, the max value is reported as the extreme value. If the expression contains < or <= the min value is reported as the extreme value. Expressions having voltage function to the right and left of the comparison operator such as v(g)>v(s) are not supported. However, v(g,s)>0 is supported.

In Spectre, Spectre APS, Spectre X, and Spectre XPS SPICE, the expression specified in cond can have multiple key-expressions. For example, cond="v(g,s)>0.4 && v(d,s)>0.4".

In Spectre XPS FastSPICE, the expression specified in cond should contain only one key-expression. For example, cond="v(g,s)>0.4".

The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

This design check is supported only in Spectre, Spectre APS, Spectre X, Spectre XPS SPICE, and Spectre XPS FastSPICE mode. It is not supported in Spectre MS mode (see Chapter 4, “The Spectre XPS Circuit Simulator”). For Spectre, Spectre XPS SPICE, and Spectre MS modes, use of device check is recommended (see Device Checks).

Arguments

model

MOSFET device model names to be checked.

cond

Condition to be checked (default is none).

sample

Report the extreme value or the start point. Possible values are extreme and start.

sort

Sort the violations. If set to no, no sorting is performed. If set to duration, violations are sorted based on duration. Possible values are no and duration. The default value is no.

duration

Conditions with duration longer than the specified value are reported (default is 5ns).

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

mos1 dyn_mosv model=[nmos] cond=" v(g,s)>1.9" duration=2n

The above command will report a MOSFET instance of NMOS that fulfills the condition v(g,s)>1.9 for a duration longer than 2n. The following is an example of the report that is displayed in the Web browser:

Dynamic Resistor Voltage Check

Syntax

title dyn_resv cond=<expression> duration=<value> time_window=[start1 stop1 start2 stop2 ....] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value> 

Description

Reports resistor elements fulfilling the conditional expression on element voltages for a duration longer than the user-defined duration threshold (duration).

Supported resistor variables are: V(1,2), V(1), and V(2).

Supported operators are: +, -,*, /, ==,!=, <, <=, >, >=,||, &&, and !.

The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

This design check is supported only in Spectre XPS FastSPICE mode. It is not supported in Spectre, Spectre APS, Spectre X, Spectre XPS SPICE, and Spectre MS modes (see Chapter 4, “The Spectre XPS Circuit Simulator”). For Spectre, Spectre APS, Spectre XPS SPICE, and Spectre MS modes, use of device check is recommended (see Device Checks).

Arguments

cond

Condition to be checked (default is none).

duration

Conditions with duration longer than the specified value are reported (default is 5ns).

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

resv dyn_resv cond="V(1,2)>0.2" duration=5n

The above command will report the resistor elements that fulfill the condition V(1,2)>0.2V for a duration longer than 5e-10s. The following is an example of the report that is displayed in the Web browser:

Dynamic Capacitor Voltage Check

Syntax

title dyn_capv cond=<expression> duration=<value> time_window=[start1 stop1 start2 stop2 ....] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value> 

Description

Reports capacitor elements fulfilling the conditional expression on element voltages for a duration longer than the user-defined duration threshold (duration).

Supported capacitor variables are: V(1,2), V(1), and V(2).

Supported operators are: +, -,*, /, ==,!=, <, <=, >, >=,||, &&, and !.

The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

This design check is supported only in Spectre XPS FastSPICE mode. It is not supported in Spectre, Spectre APS, Spectre X, Spectre XPS SPICE, and Spectre MS modes (see Chapter 4, “The Spectre XPS Circuit Simulator”). For Spectre, Spectre APS, Spectre XPS SPICE, and Spectre MS modes, use of device check is recommended (see Device Checks).

Arguments

cond

Condition to be checked (default is none).

duration

Conditions with duration longer than the specified value are reported (default is 5ns).

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

capv dyn_capv cond="V(1, 2)>0.2 duration=0.5n

The above command will report the capacitor elements that fulfill the condition V(1,2)>0.2V for a duration longer than 5e-10s. The following is an example of the report that is displayed in the Web browser:

Dynamic Diode Voltage Check

Syntax

title dyn_diodev model=[m1 m2 ...] cond=<expression> duration=<value> time_window=[start1 stop1 start2 stop2 ....] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value> 

Description

Reports diode devices fulfilling the conditional expression on device voltages for a duration longer than the user-defined duration threshold (duration).

Supported diode variables are: v(a,c), v(a), and v(c).

Supported operators are: +, -,*, /, ==,!=, <, <=, >, >=,||, &&, and !.

The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

This design check is supported only in Spectre XPS FastSPICE mode. It is not supported in Spectre, Spectre APS, Spectre X, Spectre XPS SPICE, and Spectre MS modes (see Chapter 4, “The Spectre XPS Circuit Simulator”). For Spectre, Spectre APS, Spectre XPS SPICE, and Spectre MS modes, use of device check is recommended (see Device Checks).

Arguments

model

Diode device model names to be checked.

cond

Condition to be checked (default is none).

duration

Conditions with duration longer than the specified value are reported (default is 5ns).

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

dv1 dyn_diodev model=["diode1"] cond="v(a,c)>0.5" duration=2.5e-08

The above command will report the instances of diode1 that fulfill the condition v(a,c)>0.5 for a duration longer than 25n. The following is an example of the report that is displayed in the Web browser:

Dynamic Excessive Element Current Check

Syntax

title dyn_exi dev=[d1 d2 ...] duration=<value> ith=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value> time_window=[start1 stop1 start2 stop2 ....]

Description

Reports elements and devices carrying currents (absolute value) above a threshold specified by ith for a time longer than the duration threshold specified by duration. The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

This design check is not supported in Spectre MS mode. See Spectre Mixed-Signal Design Simulation.

Arguments

dev

Device (MOSFET, R, C, and so on) instance names to be checked (default is none).

duration

Excessive currents with a duration longer than value are reported (default is 5ns).

ith

Elements with current higher than the specified value are reported (default is none).

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

Example

exi dyn_exi dev=["*"] ith=1e-06 duration=1e-09 

The above command will report all device instances that carry excessive currents higher than 1e-06 for a duration longer than 1e-09s. The following is an example of the report that is displayed in the Web browser:

Dynamic Excessive Rise and Fall Time Check

Syntax

title dyn_exrf node=[n1 n2 ...] rise=<value> fall=<value> utime=<value> vlth=<value> vhth=<value> time_window=[start1 stop1 start2 stop2 ....] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <fanout=all|gate|bulk|gate_has_driver_no_moscap|gate_no_moscap> <filter=[no|rc]> <inverse=[no|yes]> <sort=[no|duration]> <depth=n> error_limit=<value> 

Description

Reports nodes with excessive rise and fall times, or nodes with an undefined state. The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

This design check is not supported in Spectre MS mode. See Spectre Mixed-Signal Design Simulation.

Arguments

node

Nodes to be checked. Default is none.

rise

Rise times longer than specified value are reported (default is none). The rise time is measured between low (vlth) and high (vhth) voltage thresholds.

fall

Fall times longer than specified value are reported (default is none). The fall time is measured between low (vlth) and high (vhth) voltage thresholds.

utime

Undefined time threshold. Undefined state is defined by node voltages between the low and high voltage thresholds.

vlth

Low voltage threshold for rise, fall, and utime measurements (default is none).

vhth

High voltage threshold for rise, fall, and utime measurements (default is none).

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*.

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

fanout

Fanout setting to filter node with specified connection. When fanout=gate_no_moscap, gates connecting only to MOSCAPs will not be checked. This option is supported only in Spectre XPS. Possible values are all, gate, bulk, gate_has_driver_no_moscap, gate_no_moscap. Default is all.

filter

If set to no, filtering is not performed. If set to rc, dyn_exrf checks only one node in the same parasitic sub. This option is supported only in Spectre XPS FastSPICE. Possible values are no and rc.

inverse

If set to no, reports rise times and fall times longer than the specified value. If set to yes, reports rise times and fall times smaller than the specified value. Possible values are no and yes. Default is no.

sort

Sort the violations. If set to no, no sorting is performed. If set to duration, violations are sorted based on duration. Possible values are no and duration. The default value is no.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

exrf1 dyn_exrf node=["*"] rise=5e-10 fall=5e-10 utime=1e-09 vlth=0.3 vhth=2.7 time_window=[1e-09 9e-09]

The above command will report nodes with rise and fall times larger than 5e-10s and nodes with undefined states longer than 1e-09s. Measurements are performed between the voltage thresholds 0.3V and 2.7V and within the time window between 1e-09s and 9e-09s. The following is an example of the report that is displayed in the Web browser:

Dynamic Glitch Check

Syntax

title dyn_glitch node=[n1 n2 ...] duration=<value> min_duration=<value> max_duration=<value> time_window=[start1 stop1 start2 stop2 ....] high=<value> low=<value> mid=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <fanout=all|gate|bulk> <depth=n> error_limit=<value>

Description

A glitch occurs when:

The check applies only to blocks with single and constant power supply.

The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

This design check is not supported in Spectre MS mode. See Spectre Mixed-Signal Design Simulation.

Arguments

node

Nodes to which the check is applied. Default is none.

duration

Duration threshold of a glitch (default is 5ns).

min_duration

Minimum glitch duration threshold. Default is 0 sec.

max_duration

Maximum glitch duration threshold Default is 5ns.

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

high

High voltage level (default is none).

low

Low voltage level (default is 0V).

mid

Mid voltage level (default is 0.5*(high+low).

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

fanout

Fanout setting to filter node with specified connection. Possible values are all, gate, and bulk. Default is all. This option is supported only in Spectre XPS FastSPICE mode.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

dyn_glitch1 dyn_glitch node=["*"] duration=1e-09 high=1.2

The above command will report all nodes with glitches. The glitch duration is defined to be smaller than 1ns. The high voltage level is 1.2V. The following is an example of the report that is displayed in the Web browser:

Dynamic Setup and Hold Check

Syntax

title dyn_setuphold node=[node] ref_node=[node] setup_time=<value> hold_time=<value> setup_chk_time=<value> setup_hold_time=<value> delay=<value> edge=[rise|fall|both] ref_edge=[rise|fall|both] vlth=<value> ref_vlth=<value> vhth=<value> ref_vhth=<value> time_window=[start1 stop1 start2 stop2 ....] margin_stats=[yes|no] <subckt=[subckt1 subckt2....]> <fanout=all|gate|bulk> error_limit=<value> report=[violation|all]

Description

Measures the timing of a signal net in comparison to a referenced (clock) net. It reports the setup or hold timing errors if the signal net transition happens within the specified violation window.

The violation window of the setup timing check is refTime + delay - setup_time and refTime + delay. The violation window for the hold timing check is refTime + delay and refTime + delay + hold_time. refTime is the transition time of the reference net.

ref_vhth and vhth parameters trigger the rising edge measurements, whereas ref_vlth and vlth parameters trigger the falling edge measurements.

If subcircuit parameter (subckt) is specified then the node (node) and reference node (ref_node) are considered local nodes to that subcircuit. That is, the nodes and reference nodes will belong to the instances of the specified subcircuit. Only one subckt value can be specified per check, with no wildcard.

If the subckt parameter is not specified then node and ref_node are considered as global nodes with hierarchical names starting from the top level.

The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

In the figure above, a setup or hold error is reported if the signal net transition occurs in the red marked area.

This design check is not supported in Spectre MS mode. See Spectre Mixed-Signal Design Simulation.

Arguments

node

Node to which the check is applied. Default is none.

ref_node

Name of the referenced clock (net). Wildcards are not supported.

setup_time

Setup time violation window. If specified, setup check is enabled. Default is 0.0 sec.

hold_time

Hold time violation window. If specified, hold check is enabled. Default is 0.0 sec.

delay

Delay time of the referenced signal. Default is 0.0 sec.

edge

Edge type of the signal net. Possible values are rise, fall, or both. Default is rise.

ref_edge

Edge type of the referenced signal net. Possible values are rise, fall, or both. Default is rise.

setup_chk_time

Specifies the setup time checking window. Spectre only checks the signal states within refTime+delay-setup_chk_time and refTime+delay window. Signal states outside the window are ignored. This argument is enabled only when setup check is enabled and the value of report is all. The specified value must be greater than setup_time. Default value is 2*setup_time.

hold_chk_time

Specifies the hold time checking window. Spectre only checks the signal states within refTime+delay+hold_chk_time and refTime+delay window. Signal states outside the window are ignored. This argument is enabled only when hold check is enabled and the value of report is all. The specified value must be greater than hold_time. Default value is 2*hold_time.

vlth

Low voltage threshold for the signal net. Default is 0.2v.

ref_vlth

Low voltage threshold for the referenced net. Default is 0.2v

vhth

High voltage threshold for the signal net. Default is 0.8v

ref_vhth

High voltage threshold for the referenced net. Default is 0.8v.

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

margin_stats

Specifies whether or not to print the margin statistics. By default, margin statistics are not printed. Possible values are no and yes. The default value is no.

error_limit

Maximum number of errors to be reported. Default is 10000.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is none.

fanout

Fanout setting to filter node with specified connection. Possible values are all, gate, and bulk. Default is all. This option is supported only in Spectre XPS FastSPICE mode.

report

Reports all checks or violations only. Possible values are all and violation. Default value is violation.

Example 1

s4 dyn_setuphold node=["*"] edge=rise ref_node=“I9.I1.clk" ref_edge=rise setup_time=5e-11 vhth=0.5 ref_vhth=0.5

The above command reports any transition of signal node in the time window between 0.5ns before the signal clk rises.

Since subckt parameter is not specified, it will compare all nodes with ref_node I9.I1.sig_2 and report any violations.

The following is an example of the report that is displayed on the Web browser.

Example 2

s1 dyn_setuphold node=["*"] edge=rise ref_node=“clk" ref_edge=rise setup_time=5e-11 vhth=0.5 ref_vhth=0.5 subckt=ckt1 

The above command reports any transition of the signal data in the time window between 0.5ns before the signal clk rises.

Since subckt=ckt1 is specified, it will compare all nodes in subckt ckt1 with ref_node sig_2 and report any violations. Note that node and ref_node belongs to same subckt ckt1.

The following is an example of the report that is displayed on the Web browser.

Dynamic Noisy Node Check

Syntax

title dyn_noisynode node=[node] time_window=[start1 stop1 start2 stop2 ....] duration=<value> <inst=[inst1 inst2...]> skip =<value> e1=<value> e2=<value> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <fanout=all|gate|bulk> <depth=n> error_limit=<value>

Description

Identifies the nodes with unstable or noisy node conditions. A node is considered unstable or noisy if its voltage fulfills the condition abs(dV/dt)>e1 and abs(d(dV/dt)dt>e2 for a time longer than duration. Stable periods shorter than skip are ignored. The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

This design check is not supported in Spectre MS mode. See Spectre Mixed-Signal Design Simulation.

Arguments

node

Node to which the check is applied. Default is none.

duration

Duration threshold. Default is 5.00e-07.

e1

First derivative threshold. Default is 5.00e04.

e2

Second derivative threshold. Default is 2.00e16.

skip

Stable periods less than skip are ignored. Default is 50.0e-09

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

error_limit

Maximum number of errors to be reported. Default is 10000.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit check. Default is none.

fanout

Fanout setting to filter node with specified connection. Possible values are all, gate, and bulk. Default is all. This option is supported only in Spectre XPS FastSPICE mode.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

Example

u1 dyn_noisynode node=["*"] duration=1e-08 skip=1.5e-10 time_window=[0 20n]

The above command reports all nodes with unstable or noisy node conditions for a duration longer than 1e-08 seconds. Stable periods shorter than 1.5e-10 are ignored. The circuit check is active between 0 and 20ns.

The following is an example of the report that is displayed on the Web browser.

Dynamic Node Capacitance Check

Syntax

title dyn_nodecap <node=[node1 node2...]> <time=[t1 t2...]> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <fanout=all|gate|bulk> <depth=n> error_limit=<value><intrinsic_cap_merge=no|yes>

Description

Reports the node capacitance at specified times (time) of a transient simulation. Device capacitances, voltage dependent capacitances, grounded and coupling caps are combined into one value. The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

This design check is not supported in Spectre MS mode. See Spectre Mixed-Signal Design Simulation.

Arguments

node

Nodes for which the capacitance needs to be checked. Default value is none.

time

Time point(s) at which the check needs to be performed.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

intrinsic_cap_merge

Merge the internal captab node with the external node. Possible values are yes and no. The default value is no.

This option is supported only in Spectre, Spectre APS, and Spectre X.

fanout

Fanout setting to filter node with specified connection. Possible values are all, gate, and bulk. Default is all. This option is supported only in Spectre XPS FastSPICE mode.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

n1 dyn_nodecap node=[*] time=[0 3n 7n]

The above command will report the node capacitance for all nodes at times 0, 3ns and 7ns.

The following is an example of the report that is displayed in the Web browser:

Dynamic Subcircuit Port Power Check

Syntax

title dyn_subcktpwr <port=[port1 port2...]> <inst=[inst1 inst2...]> <net=[n1 n2...]> <power=[on|off]> error_limit=<value> time_window=[start1 stop1 start2 stop2 ....] <depth=n> filter=[none|gates] ith=<value>

Description

Reports port currents, port powers, and subcircuit powers.

The port current is positive when the current is going into a subcircuit. This check will report average, RMS, and maximum values of the current entering a port.

This check can be used in two ways. One is tree-based and other is instance-based. Both methods cannot be combined in one check statement. If you specify both methods in one check statement, then the tree-based method gets higher priority than the instance-based method.

In the tree-based method, the root of a tree is selected by the parameter net. From this root, port current is traced down the hierarchy until depth or device is reached. The port, inst, and power parameters are irrelevant in tree-based approach.

In the instance-based method, any port name matching inst and port parameters are reported.

Power analysis can be done by using the parameter power. This parameter is supported only in the instance-based method. When the parameter power is set to on, then two additional sections are generated. The first section reports the average, RMS and the maximum power entering the ports, specified using the parameter port. The second section reports the average, RMS, and the maximum power consumed by each instance of a subcircuit, specified using the parameter inst.

The wildcard in port parameter only considers the ports defined in the subcircuit definition. For global nodes, you need to add the ports manually.

Arguments

port

The ports that need to be analyzed. Default value is none.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

net

Specify the root for the tree-based method. This argument is supported only in Spectre, Spectre APS, and Spectre X.

power

If set to off (default), report only port currents. If set to on, report port currents, and power of ports and subcircuits.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is none.

filter

If set to none (default), all gates are checked. If set to gates, ports connected to MOSFET gates are skipped.

error_limit

Maximum number of errors to be reported. Default is 10000.

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

ith

If all the abs(AVG), RMS and abs(MAX) values are below ith, the values will be filtered out.

Example

chk1 dyn_subcktpwr inst=[*] port=[*] depth=1 time_window=[0 10m] power=on

The above command reports the port current for all ports of all instances in the time window between 0 and 10ms. The report includes the current and power information for all subcircuit instances one level down the hierarchy.

The following is an example of the report that is displayed in the Web browser:

Dynamic Pulse Width Check

Syntax

title dyn_pulsewidth node=[n1 n2 ...] pwmin_low=<value> pwmax_low=<value> pwmin_high=<value>  pwmax_high=<value> vlth=<value> vhth=<value> time_window=[start1 stop1 start2 stop2 ....] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <fanout=all|gate|bulk> <depth=n> error_limit=<value>

Description

The pulse width of a logic low state signal is the duration between which the signal crosses the low voltage threshold (vlth) while falling and again crosses vlth while rising. If this duration is outside the range specified using the pwmin_low and pwmax_low parameters, the dyn_pulsewidth check reports the pulse width of such signals.

Similarly, the pulse width of a logic high state signal is the duration between which the signal crosses the high voltage threshold (vhth) while rising and again crosses vhth while falling. If this duration is outside the range of pwmin_high and pwmax_high parameters, the dyn_pulsewidth check reports the pulse width of such signals.

The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

This design check is not supported in Spectre MS mode. See Spectre Mixed-Signal Design Simulation.

Arguments

node

Nodes to which the check is applied. Default is none.

pwmin_low

Minimum value of the pulse width in logic low state. Default is 0.0 sec.

pwmax_low

Maximum value of the pulse width in logic low state. Default is infinity sec.

pwmin_high

Minimum value of the pulse width in logic high state. Default is 0.0 sec.

pwmax_high

Maximum value of the pulse width in logic high state. Default is infinity sec.

vlth

Low voltage threshold for the signal net. Default is 0.2v.

vhth

High voltage threshold for the signal net. Default is 0.8v.

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

error_limit

Maximum number of errors to be reported. Default is 10000.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

fanout

Fanout setting to filter node with specified connection. Possible values are all, gate, and bulk. Default is all. This option is supported only in Spectre XPS FastSPICE mode.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

Example

chk1 dyn_pulsewidth node=[*] pwmin_low=20n pwmax_low=40n pwmin_high=20n pwmax_high=40n vlth=0.2 vhth=1.0

The above command reports all nodes that specify either of the following conditions:

The following is an example of the report that is displayed in the Web browser.

Dynamic Power Density Check

Syntax

title dyn_powerdensity time_window=[start1 stop1 start2 stop2 ....] window=<value> shift=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> 

Description

Device and circuit reliability heavily depend on how much power is consumed by the individual MOSFET devices and how much heat is generated in a short period of time. To ensure improved reliability and lifetime, circuit designers need to optimize the power consumption of devices in the given design.

The power density check reports the average window with the highest power consumption for each MOSFET. It is based on shifting the measuring window over the operating time window.

The results are written to a file with the extension dynamic.xml, which can be viewed with a Web browser.

Parameters

Filtering parameters

time_window

[tstart, tstop] sec

The time window during which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

window

10e-9 sec

Width of a measuring window for average power calculation. These measuring window will be inside the time_window. If not specified, there will be only one measuring window and it will be equal to time_window.

shift

5.00E-09 sec

Time shift between two measuring window. Default is 5.00E-09 sec.

error_limit

10000

Maximum number of errors reported. Default is 10000.

Wildcard scoping

inst

[...]

Subcircuit instances to which the check is applied. Default includes all instances (inst=*).

xinst

[...]

Subcircuit instances to be excluded from the check. Default is none.

subckt

[...]

The instances of the specified subcircuit to which the check is applied. Default includes all subcircuits (subckt=*).

xsubckt

[...]

The instances of the specified subcircuits that are excluded from the check. Default is none.

depth

8

Hierarchy levels (starting from top, instance, or subcircuit scope) to be checked. Default is 8.

Example

The following statement reports the average window with the highest power consumption for each MOSFET. The power consumption will be checked in 6n seconds average windows, shifted by 2n seconds.

chk1 dyn_powerdensity shift=2n window=6n

The report of this example is displayed in the Web browser, as shown below.

Dynamic Active Node Check

Syntax

title dyn_actnode node=[n1 n2 ...] dv=<value> type=<value> time_window=[start1 stop1 start2 stop2 ....] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <fanout=all|gate|bulk> <depth=n> error_limit=<value>

Description

The dynamic active node check detects nodes with voltage changes that exceed the user-defined threshold dv. The voltage change is defined as peak-to-peak voltage (Vpp) within a time window.

The results are written to the dynamic.xml file, which can be viewed in a Web browser.

This design check is supported in Spectre, Spectre APS, Spectre X, Spectre XPS Spice, and Spectre XPS FastSPICE modes. It is not supported in Spectre MS mode.

Arguments

node

Nodes to which the check is applied. Default is none.

dv

Voltage change threshold for the active nodes. Default is 0.1 volt.

type

Report inactive or active nodes or both. Possible values are act, inact, and both.

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

error_limit

Maximum number of errors to be reported. Default is 10000.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

fanout

Fanout setting to filter node with specified connection. Possible values are all, gate, and bulk. Default is all. This option is supported only in Spectre XPS FastSPICE mode.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

Example

chk2 dyn_actnode node=[*] dv=4 type=act time_window=[0 3e-07]

The above command reports all nodes that are active. These active nodes will have peak-to-peak voltage above 4V between 0s to 300ns. In addition, the command prints a summary report that lists the percentage of active nodes having peak-to-peak voltage above 4V between 0s to 300ns.

The following is an example of the report that is displayed on the Web browser.

Dynamic Subcircuit Instance Activity Check

Syntax

title dyn_activity min_activity=<value> time_window=[start1 stop1 start2 stop2...] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value>

Description

This check reports the activity percentage of an instance relative to a circuit. The activity percentage is the ratio of events in the instance versus the events in the entire circuit.

The check reports the activity for instances specified using the inst parameter and all its child instances.

The results are written to the dynamic.xml file, which can be viewed in a Web browser.

This design check is supported only in Spectre XPS FastSPICE mode. It is not supported in Spectre, Spectre APS, Spectre X, Spectre XPS SPICE, and Spectre MS modes (see Chapter 4, “The Spectre XPS Circuit Simulator”).

Arguments

min_activity

Any block activity below the minimum activity value is not be reported. The value can be between 0 and 1. Default is 0.

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

inst

Instances of the subcircuit to which the check is applied. Default is none.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top, instance, or subcircuit scope) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

chk1 dyn_activity inst=[x1 x2] time_window=[0n 20n] min_activity=0

The above command will check the activity percentage of instances X1 and X2. The events start recording between the specified time window of 0ns and 20ns.

The following is an example of the report that is displayed on the Web browser:

Dynamic Subcircuit Port Voltage/Current Check

Syntax

title dyn_subcktport cond=<expression> duration=<value> time_window=[start1 stop1 start2 stop2...] subckt=<value> error_limit=<value>

Description

Reports instances of the user-specified subckt fulfilling the conditional expression on port voltages and port currents for a time longer than the user-specified duration. Only one subcircuit is allowed per statement.

Voltages and currents of a port can be referenced by the port name of a subcircuit. For example, consider the subcircuit definition .subckt INV port_A port_B. Here, supported port names are: v(port_A), v(port_B), v(port_A,port_B), i(port_A), and i(port_B). The port current is positive when the current is flowing into a subcircuit.

Supported operators are: +, -,*, /, ==,!=, <, <=, >, >=,||, &&, and !.

All design instances of the subcircuit specified using subckt are checked.

The results are written to the dynamic.xml file, which can be viewed in a Web browser.

This design check is supported only in Spectre XPS FastSPICE mode. See Chapter 4, “The Spectre XPS Circuit Simulator”.

Arguments

cond

Conditional expression to be fulfilled. Default is none.

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

duration

Duration threshold. Default is 5.00E-09 sec.

error_limit

Maximum number of errors reported. Default is 10000.

subckt

Instances of the specified subcircuit to which the check is applied. Wildcard is not supported. Default is none.

Example

vol1 dyn_subcktport subckt="decwl64b" cond="v(inh_VDD)>1.7" duration=10n 

The above command will report all instances of subcircuit decwl64b satisfying the condition v(inh_VDD)>1.7 for a duration longer than 10n.

The following is an example of the report that is displayed on the Web browser:

Dynamic Delay Check

Syntax

title dyn_delay node=[node] ref_node=[node] min_time=<value> max_time=<value> edge=[rise|fall|both] ref_edge=[rise|fall|both] vlth=<value> ref_vlth=<value> vhth=<value> ref_vhth=<value> time_window=[ start1 stop1 start2 stop2 .... ] <subckt=[subckt1]> <fanout=all|gate|bulk> error_limit=<value>

Description

Checks timing delays between two signals and reports nodes with edge delay errors.

The delay is measured between user-specified nodes and a reference node. A timing delay error occurs when the transition time of a signal falls outside the range of refTime + min_time and refTime + max_time, where refTime is the transition time of the reference signal. In other words, a timing delay error occurs when the delay between the signal and the reference signal is outside the range of min_time and max_time.

The ref_vhth and vhth parameters are used for triggering rising edge measurements, while ref_vlth and vlth parameters are used for triggering falling edge measurements. For example, a delay measurement from a rising reference signal to a falling signal includes measuring the delay from the time the reference signal crosses ref_vhth to the time the signal crosses vlth.

If the subckt parameter is specified, then node and ref_node are considered as local nodes to the specified subcircuit. In other words, node and ref_node belong to the instances of the specified subcircuit. Only one subckt value can be specified per check, with no wildcard.

If the subckt parameter is not specified, node and ref_node are considered as global nodes with hierarchical names starting from the top level.

The results are written to the dynamic.xml file, which can be viewed in a Web browser.

In the figure above, an error is reported if the signal net transition occurs outside the green marked area.

This design check is not supported in Spectre MS mode. See Spectre Mixed-Signal Design Simulation.

Arguments

node

Nodes to which the check is applied. Default is none.

ref_node

Name of the referenced node. Wildcards are not supported.

min_time

Minimum time delay between the signal and the reference signal transition. The specified value can be negative, 0, or positive.

max_time

Maximum time delay between the signal and the reference signal transition. The specified value can be negative, 0, or positive.

edge

Edge type of the signal net. Possible values are rise, fall, and both. Default value is rise.

ref_edge

Edge type of the reference signal. Possible values are rise, fall, and both. Default value is rise.

vlth

Low voltage threshold for the signal net.

ref_vlth

Low voltage threshold for the referenced net.

vhth

High voltage threshold for the signal net.

ref_vhth

High voltage threshold for the referenced net.

time_window

Time window to which the circuit check is applied. Multiple non-overlapping time windows are supported. Default time window is 0 to tend.

error_limit

Maximum number of errors reported. Default is 10000.

subckt

Instances of the specified subcircuit to which the check is applied. Default is none.

Example

d1 dyn_delay ref_node=out8 node=out1 ref_edge=rise edge=fall min_time=100p max_time=5n time_window=[115n 200n]

The above command reports any transition of signal data having delay of more than 5n seconds or having delay of less than 100p seconds. The delay is evaluated from the rising edge of out8 node to the falling edge of out1 node.

If the subckt parameter is not specified, then node and ref_node are considered as global nodes with the hierarchical names starting from the top level.

The following is an example of the report that is displayed on the Web browser:

Dynamic Floating Node Statistical Check

Syntax

title dyn_float_tran_stat domains=[domain_pair_1 domain_pair_2...] ping_start=<value> ping_count=<value> ping_duration=<value> ping_ibias=<value> ping_iabsthresh=<value> ping_iabsthresh_ramp=<value> ping_irelthresh=<value> seed=<value> domain_voltage_thresh=<value> save=[no|all|ping] distribute=[no|fork] numprocesses=<value> report_top_current=<value> ping_resistor_max=<value> ping_duration_max=<value> ping_resistor_min=<value> time_constant=<value> node=[node1 node2...] xnode=[node1 node2...] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> ping_voltage_thresh=<value> ping_index =[value1 value2 ...] domain_detection_voltage_atol=<value>

Description

The dyn_float_tran_stat check reports leaky MOSFETs/BJTs caused by floating nodes. It also detects floating nodes caused by other floating nodes.

The check deploys a statistical method of forcing (pinging) different voltages on the gate of MOSFET and the base of BJT. Ping refers to randomly forcing a node to 0 or VDD, or ramping from 0 to VDD. Only MOSFET gates or BJT base nodes are pinged. Ping is realized by applying a voltage source in series with a large resistor (ping_resistor) on each node. The strength of a ping is weaker (because of large ping_resistor) than other drivers on each node.

dyn_float_tran_stat Algorithm

The results are written to the dynamic.xml file, which can be viewed in a Web browser.

Arguments

domains

Pairs of power-supply domains in which the floating nodes are checked. For example, domains=[VDD VSS VPP VSS]. The domain also defines the domain voltage (domain_voltage) value for forcing node voltages. Default value is none. Wildcarding is not supported.

ping_start

The time at which the check is initiated.

ping_count

The number of statistical periods being used. The default value is 300. If the ping_index argument is also specified, ping_count is ignored.

ping_duration

The duration of a ping. A ping consists of the following two phases

  • high/low forcing phase
  • ramp up forcing phase

The length of each phase is half the ping duration. Default value is none.

ping_ibias

Lowest bias current in the design. It is recommended to set this parameter to 10% of bias current in the design. The default value is none. If specified, then ping_resistor is evaluated to be equal to domain_voltage/ping_ibias.

ping_iabsthresh

The current threshold for floating node detection during high/low forcing. The default value is domain_voltage/ping_resistor.

ping_iabsthresh_ramp

The current threshold for floating node detection during ramp forcing. The default value is 100 * domain_voltage/ping_resistor.

ping_irelthresh

The relative threshold for floating node detection for both high/low and ramp forcing. The default value is 1000.

seed

The seed value for random number generation.

domain_voltage_thresh

The lowest threshold for domain voltage. If a node has voltage less than domain_voltage_thresh, it is excluded from the ping. The default value is 0.0.

save

Probes the gate voltage of MOSFETs, base voltage of BJTs, drain current of MOSFETs, and collector current of BJTs. If the value is set to ping , netlist, or all, a new waveform file is written in the raw directory. The format of the waveform file is <CheckName>_<PingStart>.tran.tran, where CheckName is the name of the check and PingStart is time from PingStart up to the time the ping simulation is finished. If the value is set to ping, only ping voltages and MOS/BJT currents are saved. If the value is set to netlist, the signals mentioned in the netlist are saved. If set to all, both the signals in the save=ping and the ones saved in the netlist are saved.

The default value is no. Possible values are ping, no, all, and netlist.

distribute

The distributed processing method. Possible values are lsf, no and fork.

numprocesses

The number of processes for distributed processing.

report_top_current

The number of top n devices with the largest leakage current to be reported. If the value is set to 0, the report contains all the devices.

ping_duration_max

The maximum value of the applied ping_duration. The default value is none.

ping_resistor_max

The maximum value of the applied ping_resistor. The default value is 10G.

ping_resistor_min

The minimum value of the applied ping_resistor. The default value is 100M.

time_constant

Time constant. The default value is 6.

node

Node to which the check is applied. Default is none.

xnode

Nodes to be excluded from the check. Default is none.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

ping_voltage_thresh

The threshold for the ping voltage. The default value is 0.

ping_index

Selectively re-ping a circuit with a list of pings. The default value is none.

domain_detection_voltage_atol

The voltage tolerance for voltage-based domain detection. When finding the nodes connected to VDD, the next node is marked if its voltage minus the value specified using the domain_detection_voltage_altol argument is less than the voltage of the current node. Similarly, when finding the nodes connected to VSS, the next node is marked if its voltage plus the value specified using the domain_detection_voltage_altol argument is greater than the voltage of the current node.

The default value is 1e-20.

Example

dynSta1 dyn_float_tran_stat domains=["vdd" "vss"] ping_start=[5n] ping_count=27 ping_duration=6e-06 ping_ibias=1.1e-07 ping_iabsthresh=1e-07 ping_iabsthresh_ramp=1e-07 ping_irelthresh=1000 save=all

The above command statistically forces (ping) certain voltages on all MOSFET gates in vdd-vss domain. If there is current difference before (Ref Current) and after (Current at Failure) the application of ping, then it is considered as violation.

The following is an example of the report that is displayed on the Web browser:

Dynamic Uninitialized Check

Syntax

title dyn_uninilatch_check node=[node1 node2...] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> error_limit=<value>

Description

The dyn_uninilatch check detects the uninitialized latch nodes that have more than one DC solution. The check reports all nodes in a potential loop.

The results are written to the dynamic.xml file, which can be viewed in a Web browser.

The dyn_uninilatch check is supported only in Spectre XPS FastSPICE. See Chapter 4, “The Spectre XPS Circuit Simulator”.

Arguments

node

Nodes to which the check is applied. Default is none.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

chk2 dyn_uninilatch node=[*] inst=[x1 x2] time_window=[0n 20n]

Static Checks

Static checks are performed after parsing, using the topology information and voltage propagation. They apply to digital and SRAM circuits only and do not require a transient simulation. Static checks use the static_ keyword prefix and write the results into a file with the extension.static.xml. The xml file can be viewed with any Web browser.

Static checks are supported only in Spectre APS, Spectre X, Spectre XPS SPICE, Spectre XPS FastSPICE, and Spectre MS. These static circuit checks are not supported in Spectre.

Static High Impedance Node Check

Syntax

title static_highz  node=[n1 n2 ...] vnth=<value> vpth=<value> vsrcnodefile=[[subckt]...] "NV_FILE1" [subckt2 "NV_FILE2" subckt3 "NV_FILE3" …]]] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <fanout=all|gate|bulk|gate_has_driver_no_moscap|bulkgate_no_moscap> pwl_time=<value> <depth=n> error_limit=<value> <rpt_node=no|all|top|selected>

Description

Reports nodes without a possible conducting path to a DC power supply or ground. The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

node

Nodes to be checked for the highz state. Default is none.

fanout

Fanout setting to filter node with specified connection. When set to gate_has_driver_no_moscap, floating nodes only connecting to MOSCAPs will not be checked. When set to gate_no_moscap, gates only connecting to MOSCAPs will not be checked. Possible values are all, gate, bulk ,gate_has_driver_no_moscap, and bulkgate_no_moscap. Default is all.

rpt_node

Report node voltages. If set to no, no node voltages are reported. If set to all, all node voltages are reported. If set to top, voltages of only the top-level nodes are reported. If set to selected, voltages of only the specified nodes are reported. The report is written to a file named <netlist_name>.<check_name>.nv.

Possible values are no, all, top, and selected. The default value is no.

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation (the default value is -0.4 v).

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across a NMOS channel during voltage propagation (the default value is 0.5 v).

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"]

Default is "[...]".

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

error_limit

Maximum number of errors to be reported. Default is 10000.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

Example

static_hz1 static_highz node=["*"] 

The above command will report all possible high impedance nodes. The following is an example of the report that is displayed in the Web browser:

Static DC Leakage Path Check

Syntax

title static_dcpath net=[n1 n2 ...] vnth=<value> vpth=<value> vsrcnodefile=[[subckt]...] pwl_time=<value> error_limit=<value> <rpt_node=no|all|top|selected>

Description

Reports the always conducting paths between the power supply nodes. If more than two nets are specified, Spectre checks the leakage path between each net combination. For example, if net=[vdc1 vdc2 0] is specified, then the conducting path between vdc1 and vdc2, vdc1 and 0, and vdc2 and 0 is checked.

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

net

Hierarchical node names between which the leakage path is checked. Wildcarding is not allowed. All combination of nets are checked. Default is none.

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across a NMOS channel during voltage propagation (the default value is 0.5 v).

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation (the default value is -0.4 v).

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"]

Default is "[...]".

rpt_node

Report node voltages. If set to no, no node voltages are reported. If set to all, all node voltages are reported. If set to top, voltages of only the top-level nodes are reported. If set to selected, voltages of only the specified nodes are reported. The report is written to a file named <netlist_name>.<check_name>.nv.

Possible values are no, all, top, and selected. The default value is no.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

dc1 static_dcpath net=["vdd 0"]

The above command will report potential DC leakage paths between the power supply nodes vdd and 0.The following is an example of the report that is displayed in the Web browser:

Static NMOS/PMOS Forward Bias Bulk Check (NMOS, PMOS)

Syntax

title static_nmosb model=[m1 m2 ...] mode=[definite|possible] vt=<value> vnth=<value> vpth=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> pwl_time=<value> vsrcnodefile=[[subckt]...] <depth=n> <rpt_node=no|all|top|selected> error_limit=<value>
title static_pmosb model=[m1 m2 ...] mode=[definite|possible] vt=<value> vnth=<value> vpth=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> pwl_time=<value> vsrcnodefile=[[subckt]...] <depth=n> <rpt_node=no|all|top|selected> error_limit=<value>

Description

Reports MOSFET devices with forward biased bulk condition. The results are written to a file with the extension static.xml, which can be viewed with a Web browser. A violation is generated when the bulk bias voltage meets the following conditions:

For NMOS:

For PMOS:

Arguments

model

Model(s) to which the forward bias bulk condition is applied. Default is none.

mode

When mode=possible, all possible violations are reported. When mode=definite, definite violations are reported. The default value is definite.

vt

Threshold voltage for p-n junction being checked (the default value is 0.3 v)

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across a NMOS channel during voltage propagation (the default value is 0.5 v).

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation (the default value is -0.4 v).

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"].

Default is "[...]".

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

rpt_node

Report node voltages. If set to no, no node voltages are reported. If set to all, all node voltages are reported. If set to top, voltages of only the top-level nodes are reported. If set to selected, voltages of only the specified nodes are reported. The report is written to a file named <netlist_name>.<check_name>.nv.

Possible values are no, all, top, and selected. The default value is no.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

nmosb1 static_nmosb model=["nmos"]

The above command will report all instances of the nmos model with potential forward bias bulk conditions. The following is an example of the report that is displayed in the Web browser:

Static Voltage Domain Device Check

Syntax

title static_voltdomain model=[m1 m2 ...] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> pwl_time=<value> vsrcnodefile=[[subckt]...] <depth=n> <rpt_node=no|all|top|selected> error_limit=<value>

Description

Reports high voltage driving the low-voltage MOSFETS and low voltage driving the high-voltage MOSFETs.

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

model

MOSFET device model names to be checked. By default, all types of MOSFETs are checked.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"].

Default is "[...]".

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

rpt_node

Report node voltages. If set to no, no node voltages are reported. If set to all, all node voltages are reported. If set to top, voltages of only the top-level nodes are reported. If set to selected, voltages of only the specified nodes are reported. The report is written to a file named <netlist_name>.<check_name>.nv.

Possible values are no, all, top, and selected. The default value is no.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

chk1 static_voltdomain model=[*] 

The above command will check all instances of MOSFETS. The HighV Driving LowV table reports MOSFETs whose gate voltage is higher than the drain/source voltage. The LowV Driving HighV table reports MOSFETs whose gate voltage is lower than the drain/source voltage.

The following is an example of the report that is displayed in the Web browser:

Note that the Subckt Name is the name of subcircuit containing the instance X1.MN2. This helps in locating level-shifters. If an instance is at the top-level then Subckt Name will show N/A.

Static Transmission Gate Check

Syntax

title static_tgate node=[n1 n2 ...] <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value>

Description

Reports transmission gates which may cause potential leakage currents between power supplies. Such gates can be characterized by their node connectivity, based on the following:

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

node

Nodes to be checked. Default is none.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

tgate1 static_tgate node=["*"]

The above command will report all nodes connecting to transmission gates that may cause design problems like leakage currents. The following is an example of the report that is displayed in the Web browser:

Static Always Conducting NMOS/PMOS Check (NMOS, PMOS)

Syntax

title static_nmosvgs model=[m1 m2 ...] vnth=<value> vpth=<value> vt=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> pwl_time=<value> vsrcnodefile=[[subckt]...] <depth=n> <rpt_node=no|all|top|selected> error_limit=<value>
title static_pmosvgs model=[m1 m2 ...] vnth=<value> vpth=<value> vt=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> pwl_time=<value> vsrcnodefile=[[subckt]...] <depth=n> <rpt_node=no|all|top|selected> error_limit=<value>

Description

Reports MOSFET devices potentially always conducting due to connectivity problems. The following conditions are checked, and an error is reported if they are fulfilled:

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

model

MOSFET device model names to be checked. Default is none.

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across a NMOS channel during voltage propagation (the default value is 0.5 v).

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation (the default value is -0.4 v).

vt

MOSFET threshold voltage. Default is 0V.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

rpt_node

Report node voltages. If set to no, no node voltages are reported. If set to all, all node voltages are reported. If set to top, voltages of only the top-level nodes are reported. If set to selected, voltages of only the specified nodes are reported. The report is written to a file named <netlist_name>.<check_name>.nv.

Possible values are no, all, top, and selected. The default value is no.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

mos1 static_nmosvgs model="nmos" vt=0.5

The above command will check all instances of the nmos device for a potential "always on" state. The NMOS vt is defined with 500mV.

The following is an example of the report that is displayed in the Web browser:

Static MOSFET Voltage Check

Syntax

title static_mosv model=[m1 m2 ...] cond=<expression> <rpt_node=no|all|top|selected> vnth=<value> vpth=<value> pwl_time=<value> vsrcnodefile=[[subckt]...] vsrcnodefile=[[subckt1] "NV_FILE1" [subckt2 "NV_FILE2" subckt3 "NV_FILE3" …]]] error_limit=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> 

Description

Reports MOSFET devices fulfilling the conditional expression on device voltages and device size (w, l).

Supported MOSFET variables are: v(g,s), v(g,d), v(g,b), v(d,s), v(d,b), v(s,b), v(g), v(d), v(s), v(b), l, and w.

Supported operators are: +, -,*, /, ==,!=, <, <=, >, >=,||, &&, and !.

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Design Check Parameters

model

MOSFET device model names to be checked.

cond

Condition to be checked

rpt_node

Report node voltages. If set to no, no node voltages are reported. If set to all, all node voltages are reported. If set to top, voltages of only the top-level nodes are reported. If set to selected, voltages of only the specified nodes are reported. The report is written to a file named <netlist_name>.<check_name>.nv.

Possible values are no, all, top, and selected. The default value is no.

Digitize Parameters

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across a NMOS channel during voltage propagation (the default value is 0.5 v).

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation (the default value is -0.4 v).

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"].

Default is "[...]".

Filtering Parameters

error_limit

Maximum number of errors to be reported. Default is 10000.

Wildcard Scoping

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

Example

mos1 static_mosv model="nmos" cond="v(g,s)>1.9"

The above command will report the instances of nmos that fulfill the condition v(g,s)>1.9.

The following is an example of the report that is displayed in the Web browser:

Static Resistor Voltage Check

Syntax

title static_resv cond=<expression> <inst=[inst1 inst2...]> vnth=<value> vpth=<value> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> pwl_time=<value> vsrcnodefile=[[subckt]...] <depth=n> <rpt_node=no|all|top|selected> error_limit=<value> 

Description

Reports resistor elements fulfilling the conditional expression on device voltages.

Supported resistor variables are: v(1,2), v(1), and v(2).

Supported operators are: +, -,*, /, ==,!=, <, <=, >, >=,||, &&, and !.

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

cond

Condition to be checked

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across a NMOS channel during voltage propagation (the default value is 0.5 v).

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation (the default value is -0.4 v).

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"].

Default is "[...]".

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

rpt_node

Report node voltages. If set to no, no node voltages are reported. If set to all, all node voltages are reported. If set to top, voltages of only the top-level nodes are reported. If set to selected, voltages of only the specified nodes are reported. The report is written to a file named <netlist_name>.<check_name>.nv.

Possible values are no, all, top, and selected. The default value is no.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

resv1 static_resv cond="v(1,2)>0

The above command will report the resistor elements that fulfill the condition v(1,2)>0.

The following is an example of the report that is displayed in the Web browser:

Static Capacitor Voltage Check

Syntax

title static_capv cond=<expression> <inst=[inst1 inst2...]> vnth=<value> vpth=<value> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> pwl_time=<value> vsrcnodefile=[[subckt]...] <depth=n> <rpt_node=no|all|top|selected>
error_limit=<value> 

Description

Reports capacitor elements fulfilling the conditional expression on device voltages.

Supported capacitor variables are: v(1,2), v(1), and v(2).

Supported operators are: +, -,*, /, ==,!=, <, <=, >, >=,||, &&, and !.

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

cond

Condition to be checked

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across a NMOS channel during voltage propagation (the default value is 0.5 v).

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation (the default value is -0.4 v).

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"].

Default is "[...]".

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

rpt_node

Report node voltages. If set to no, no node voltages are reported. If set to all, all node voltages are reported. If set to top, voltages of only the top-level nodes are reported. If set to selected, voltages of only the specified nodes are reported. The report is written to a file named <netlist_name>.<check_name>.nv.

Possible values are no, all, top, and selected. The default value is no.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

capv1 static_capv cond="v(1,2)>0

The above command will report the capacitor elements that fulfill the condition v(1,2)>0.

The following is an example of the report that is displayed in the Web browser:

Static Diode Voltage Check

Syntax

title static_diodev model=[m1 m2 ...] cond=<expression> vnth=<value> vpth=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> pwl_time=<value> 
vsrcnodefile=[[subckt]...]<depth=n> <rpt_node=no|all|top|selected>
error_limit=<value> 

Description

Reports diode elements fulfilling the conditional expression on device voltages.

Supported diode variables are: v(a,c), v(a), and v(c).

Supported operators are: +, -,*, /, ==,!=, <, <=, >, >=,||, &&, and !.

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

model

Diode device model names to be checked.

cond

Condition to be checked (default is none).

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across a NMOS channel during voltage propagation (the default value is 0.5 v).

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation (the default value is -0.4 v).

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"].

Default is "[...]".

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level and three sublevels. Default is 8.

rpt_node

Report node voltages. If set to no, no node voltages are reported. If set to all, all node voltages are reported. If set to top, voltages of only the top-level nodes are reported. If set to selected, voltages of only the specified nodes are reported. The report is written to a file named <netlist_name>.<check_name>.nv.

Possible values are no, all, top, and selected. The default value is no.

error_limit

Maximum number of errors to be reported. Default is 10000.

Example

dv1 static_diodev model=["diode1"] cond="v(a,c)>0"

The above command will report the instances of diode1 that fulfill the condition v(a,c)>0. The following is an example of the report that is displayed in the Web browser:

Static Resistor Check

Syntax

title static_resistor type=[range|distr|print] rmin=<value> rmax=<value> error_limit=<value>

Description

Reports all resistors within or outside the range rmin and rmax. Moreover, it also generates a distribution list of all resistors in the circuit.

If the parameter type is set to range, then all resistors outside the range of rmin and rmax will be reported.

If the parameter type is set to print, then all resistors between rmin and rmax will be reported. The resistor names can be sorted by clicking the Device name header.

If the parameter type is set to distr then a distribution report will be generated for all resistors. There are 12 bins that are:

-Inf - 0, 0 - 1m, 1m - 10m, 10m - 0.1, 0.1 - 1, 1 - 10, 10 - 100, 100 - 1k, 1k - 10k, 10k - 100k, 100k - 1Meg, and 1Meg - Inf

However, if two or more consecutive bins are empty then they will merge into one bin, reducing the number of bins. The parameters rmin, rmax and error_limit are ignored when the parameter type is set to distr.

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

type=range|distr|print

Type of report requested.

rmin

Lower bound of resistor value to be reported. Default is -1000G Ohm.

rmax

Upper bound of resistor value to be reported. Default is 1000G Ohm.

error_limit

Maximum number of errors to be reported when type=print or type=range. Default is 10000.

Example

chk1 static_resistor type=distr

The simulator generates a resistor value distribution report, as shown below.

Static Capacitor Check

Syntax

title static_capacitor type=[range|distr|print] cmin=<value> cmax=<value> error_limit=<value>

Description

Reports all capacitors within or outside the range cmin and cmax. Moreover, it also generates a distribution list of all capacitors in the circuit.

If the parameter type is set to range, then all capacitors outside the range of cmin and cmax will be reported.

If the parameter type is set to print, then all capacitors between cmin and cmax will be reported. The capacitor names can be sorted by clicking the Device name header.

If the parameter type is set to distr, then a distribution report will be generated for all capacitors. There are 9 bins that are:

-Inf - 0, 0 - 10a, 10a - 100a, 100a - 1f, 1f - 10f, 10f - 100f, 100f - 1p, 1p - 10p, 10p - Inf

However, if two or more consecutive bins are empty then they will merge into one bin, reducing the number of bins. The parameters cmin, cmax, and error_limit are ignored when the parameter type is set to distr.

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

type=range|distr|print

Type of report requested.

cmin

Lower bound of capacitor value to be reported. Default is -1F.

cmax

Upper bound of capacitor value to be reported. Default is 1F.

error_limit

Maximum number of errors to be reported when type=print or type=range. Default is 10000.

Example

chk1 static_capacitor type=distr

The simulator reports a capacitor distribution based on their value, as shown below.

Static ERC Check

Syntax

title static_erc hotwell=[off|on] dangle=[off|all|no_top] floatgate=[off|all|no_top|no_moscap|no_top_moscap|pode] <gate2power=off|on> <gate2ground=on|off> floatbulk=[off|all|no_top <inst=[inst1 inst2...]> vnth=<value> vpth=<value> vlth=<value> vhth=<value> pwl_time=<value> vsrcnodefile=[[subckt]...] <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> error_limit=<value> <depth=n> <rpt_node=no|all|top|selected> 

Description

Enables you to detect the following electrical design rule violations without running the simulation:

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

hotwell

Report MOSFET with bulk not connected to VDD or GND. Possible values are off and on.

dangle

Report dangling nodes. If set to off (default), dangling nodes are not checked. If set to all, all nodes are checked. If set to no_top, the top-level nodes are excluded from the check.

floatgate

Report unconnected MOSFET gates. If set to off (default), no nodes are checked. If set to all, all nodes are checked. If set to no_top, top-level nodes are excluded from the check. If set to no_moscap, MOSCAP gates are excluded from the check. If set to no_top_moscap, all top-level nodes and the MOSCAP gates are excluded from the check. If set to pode, all pode devices whose gates are floating are reported as violations. Possible values are off, all, no_top, no_moscap, no_top_moscap, and pode.

floatbulk

Report unconnected MOSFET bulk. If set to off (default), nodes are not checked. If set to all, all nodes are checked. If set to no_top, the top-level nodes are excluded from the check.

gate2power

Reports PMOS with gate connected to ground and NMOS with gate connected to VDD. Possible values are on and off. The default value is off.

gate2ground

Reports NMOS gate nodes connected to ground and PMOS gate nodes connected to VDD. The gate must be a vsource node. Possible values are on and off. The default value is off.

rpt_node

Report node voltages. If set to no, no node voltages are reported. If set to all, all node voltages are reported. If set to top, voltages of only the top-level nodes are reported. If set to selected, voltages of only the specified nodes are reported. The report is written to a file named <netlist_name>.<check_name>.nv.

Possible values are no, all, top, and selected. The default value is no.

vlth

Voltage below vlth is considered GND. Applicable only with hotwell, gate2ground, and gate2power. Default is 0.2V.

vhth

Voltage above vhth is considered VDD. Applicable only with hotwell, gate2ground, and gate2power. Default value is 0.8V.

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation (the default value is -0.4 v).

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across a NMOS channel during voltage propagation (the default value is 0.5 v).

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"].

Default is "[...]".

error_limit

Maximum number of errors to be reported per check. Default is 10000.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (from top level) to be checked. depth=3 reports errors on top level plus 3 sublevels. Default is 8.

Example

chk1 static_erc floatgate=all 

The above command reports all MOSFETs with a floating gate.

The following is an example of the report that is displayed in the Web browser:

Static RC Delay Check

Syntax

title static_rcdelay node=[n1 n2 ...] <detailed_path=[yes|no]> fanoutmargin=[lower_margin higher margin] cmin=<value> maxnrise=<value> minnrise=<value> maxnfall=<value> minnfall=<value> maxtrise=<value> mintrise=<value> maxtfall=<value> mintfall=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> 

Description

Reports nodes with excessive rise or fall times. Rise and fall times are based on estimation.

The static_rcdelay check analyzes only the fanout nodes. It does not check nodes that connect to MOSDIODEs or MOSCAPs. The check reports either the top worst case rise/fall times (maxnrise, maxnfall) or nodes with rise/fall times above the user-defined thresholds (maxtrise, maxtfall). In addition, the check reports the driving MOSFETs and the receiving MOSFET (gate connected to the analyzed node) for each node.

For postlayout netlist, the check supports only the backannotation (stitching) flow.

The results are reported into a file with the extension static.xml, which can be read with a Web browser.

Arguments

node

Nodes to which the check is applied. Default is none.

maxnrise

Report the top number nodes with highest rise time. Default is none.

minnrise

Report the top number nodes with lowest rise time. Default is none.

maxnfall

Report the top number nodes with highest fall time. Default is none.

minnfall

Report the top number nodes with lowest fall time. Default is none.

maxtrise

Report only those node names with rise time higher than the specified value. Default is infinity.

mintrise

Report only those node names with rise time lower than the specified value. Default is none.

maxtfall

Report only those node names with fall time higher than the specified value. Default is infinity.

mintfall

Report only those node names with fall time lower than the specified value. Default is none.

inst

Subcircuit instances to which the circuit check is applied. Default is inst=*

xinst

Subcircuit instances that are excluded from the circuit check. Default is none.

subckt

Instances of the specified subcircuit to which the circuit checks are applied. Default is subckt=*.

xsubckt

Instances of the specified subcircuit which are excluded from the circuit checks. Default is none.

depth

Hierarchy level (starting from top, instance, or subcircuit scope) to be checked. Default is 8.

fanoutmargin

Relative fanout level (in ratio of VDD voltage) for which rise and fall time is measured. The range of values is [0.01 0.99]. The default range is [0.1 0.9]. Lower margin should be less than the higher margin.

cmin

Node capacitance threshold. Only nodes with total capacitance higher than the specified value are reported. Default is 1e-14.

detailed_path

Report all possible (yes) or worst case (no) rise/fall time per node.Possible values are yes and no.

Example

chk static_rcdelay node=[*] maxnrise=10 cmin=1e-14 detailed_path=no 

The above command will estimate the RC delay for all nodes. It will report four tables, one table for each parameter. It will report the maximum (highest) two rise delays.

The following is an example of the report that is displayed in the Web browser:

Static Subcircuit Port Voltage Check

Syntax

title static_subcktport cond=<expression> vnth=<value> vpth=<value> subckt=<value> pwl_time=<value> vsrcnodefile=[[subckt]...] error_limit=<value>

Description

Reports instances of the user-specified subckt fulfilling the conditional expression on port voltages. Only one subcircuit is allowed per statement.

Voltages of a port can be referenced by the port name of a subcircuit. For example, consider the subcircuit definition .subckt INV port_A port_B. Here, supported port names are: v(port_A), v(port_B) and v(port_A,port_B).

Supported operators are: +, -,*, /, ==,!=, <, <=, >, >=,||, &&, and !.

All design instances of the subcircuit, specified using subckt are checked.

The results are written to the static.xml file, which can be viewed in a Web browser.

Arguments

cond

Conditional expression to be fulfilled. Default is none.

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across an NMOS channel during voltage propagation (default value is 0.5 v).

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation (default value is -0.4 v).

pwl_time

If specified, all pwl sources are considered constant sources with a value equal to the voltage of the pwl source at pwl_time. Default is infinity.

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"].

Default is "[...]".

error_limit

Maximum number of errors reported. Default is 10000.

subckt

Instances of the specified subcircuit to which the check is applied. Wildcard is not supported. Default is none.

Example

sp1 static_subcktport subckt="decand3_pre" cond="v(Z)>1.7"

The above command will report all instances satisfying the condition v(Z)>1.7. The following is an example of the report that is displayed in the Web browser:

Static Stack Count

Syntax

title static_stack model=<expression> count=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value>

Description

This check counts PMOS and NMOS transistor stacks and then reports stacks larger than specified count.

The results are written to the static.xml file, which can be viewed in a Web browser.

Arguments

Design check parameters

model

MOSFET device model names to be checked.

Filtering parameters

count

Maximum number of permitted count. Default is 3.

error_limit

Maximum number of errors reported. Default is 10000.

Wildcard scoping

inst

Subcircuit instances to which the check is applied. Default includes all instances (inst=*).

xinst

Subcircuit instances to be excluded from the check. Default is none.

subckt

The instances of the specified subcircuit to which the check is applied. Default includes all subcircuits (subckt=*).

xsubckt

The instances of the specified subcircuits that are excluded from the check. Default is none.

depth

Hierarchy levels (starting from top, instance, or subcircuit scope) to be checked. Default is 8.

Example

Consider the following example design:

For this design, the following command checks stacks consisted of nch and reports if the stack count is more that 1:

chk2 static_stackcount=1 model=[nch] 

The report is displayed in the Web browser, as shown below.

Static Coupling Impact Check

Syntax

title static_coupling node=[n1 n2 ...] vnth=<value> vpth=<value> <inst=[inst1inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> pwl_time=<value> <vsrcnodefile=[[subckt]...] depth=n> error_limit=<value>

Description

Evaluates the possible coupling effects in the circuit.

For each victim node, the check identifies its coupling impact from aggressor(s) by dividing the total charge of the aggressor with its node capacitance (including cc+gc+device cap). The charge of each aggressor is calculated by multiplying the voltage level of the coupling aggressors (using Vmax for worst case analysis) with the coupling capacitance. In this check, only the capacitors written in netlist are counted.

The results are written to a file with the extension static.xml, which can be viewed with a Web browser.

Arguments

node

Nodes to which the check is applied. Default is none.

error_limit

Maximum number of errors reported. Default is 100.

vpth

PMOS threshold voltage. This value is used to calculate the voltage drop across a PMOS channel during voltage propagation. Default is -0.4 V.

vnth

NMOS threshold voltage. This value is used to calculate the voltage drop across an NMOS channel during voltage propagation. Default is 0.5 V.

pwl_time

Time for pwl source to be considered as constant vsource.

vsrcnodefile

Specifies the file from which node voltage are to be read to perform the check. If the node voltages for a given block are already available from a previous simulation and saved in a vsrcnodefile file with the rpt_node feature, then you can reuse these vsource node voltages.

The subcircuit name and the related NV_FILE need to be specified in pairs. The node voltages from the NV_FILE are applied to the nodes inside the given subcircuit. If the first NV_FILE is given without a subcircuit name, then it is applied to the top level. For example, vsrcnodefile=["NV_FILE0"].

Default is "[...]".

inst

Subcircuit instances to which the check is applied. Default includes all instances (inst=*).

xinst

Subcircuit instances to be excluded from the check. Default is none.

subckt

The instances of the specified subcircuit to which the check is applied. Default includes all subcircuits (subckt=*).

xsubckt

The instances of the specified subcircuits that are excluded from the check. Default is none.

depth

Hierarchy levels (starting from top, instance, or subcircuit scope) to be checked. Default is 8.

Example

coup static_coupling node=[*] 

The above statement reports all victims that are impacted by aggressors. The following is an example of the report that is displayed in the Web browser:

This report has the following two sections:

Static PMOS to GND Count Check

Syntax

title static_pmos2gnd node=[n1 n2 ...] count=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value>

Description

Counts unpaired PMOS in the discharging path from a fanout node to GND and reports paths having PMOS count greater than the specified count.

The check only analyzes the fanout nodes. It does not check the nodes connecting only to MOSDIODEs or MOSCAPs.

The check counts PMOS from a fanout node to gnd. It does not include PMOS in the count under the following conditions but does report them.

The results are written to the static.xml file, which can be viewed in a Web browser.

Arguments

node

Nodes to which the check is applied. Default is none.

count

Maximum number of permitted NMOS. Default is 3.

inst

Subcircuit instances to which the check is applied. Default includes all instances (inst=*).

xinst

Subcircuit instances to be excluded from the check. Default is none.

subckt

The instances of the specified subcircuit to which the check is applied. Default includes all subcircuits (subckt=*).

xsubckt

The instances of the specified subcircuits that are excluded from the check. Default is none.

depth

Hierarchy levels (starting from top, instance, or subcircuit scope) to be checked. Default is 8.

error_limit

Maximum number of errors reported. Default is 10000.

Example

chk1 static_pmos2gnd node=[*] count=0 

The above statement reports all paths from all fanout nodes having PMOS count greater than 0. The following is an example of the report that is displayed in the Web browser:

It reports one path from fanout n3 to gnd. The number of PMOS found in this path is two. Note that mn1 is an NMOS therefore does not contribute in the count.

Static NMOS to VDD Count Check

Syntax

title static_nmos2vdd node=[n1 n2 ...] count=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value>

Description

Counts unpaired NMOS in the charging path from a fanout node to VDD and reports paths having NMOS count greater than the specified count

The check only analyzes the fanout nodes. It does not check the nodes connecting only to MOSDIODEs or MOSCAPs.

The check counts NMOS from a fanout node to VDD. It does not include NMOS in the count under the following conditions but does report them.

The results are written to the static.xml file, which can be viewed in a Web browser.

Arguments

node

Nodes to which the check is applied. Default is none.

count

Maximum number of permitted NMOS. Default is 3.

inst

Subcircuit instances to which the check is applied. Default includes all instances (inst=*).

xinst

Subcircuit instances to be excluded from the check. Default is none.

subckt

The instances of the specified subcircuit to which the check is applied. Default includes all subcircuits (subckt=*).

xsubckt

The instances of the specified subcircuits that are excluded from the check. Default is none.

depth

Hierarchy levels (starting from top, instance, or subcircuit scope) to be checked. Default is 8.

error_limit

Maximum number of errors reported. Default is 10000.

Example

chk1 static_nmos2vdd node=[*] count=1 

The above statement reports all paths from all fanout nodes having NMOS count greater than 1. The following is an example of the report that is displayed in the Web browser:

It reports one path from fanout n3 to vdd. The number of NMOS found in this path is two. Note that mp1 is a PMOS therefore does not contribute in the count.

Static Highfanout Check

Syntax

title static_highfanout node=[n1 n2 ...] upth=<value> downth=<value> rcut=<value> <inst=[inst1 inst2...]> <xinst=[xinst1 xinst2...]> <subckt=[subckt1 subckt2....]> <xsubckt=[xsubckt1 xsubckt2....]> <depth=n> error_limit=<value>

Description

The static_highfanout check detects MOSFETs that have a gate connected to a high fanout node. The check reports nodes that have a count greater than the specified count.

The results are written to the static.xml file, which can be viewed in a Web browser.

Arguments

node

Nodes to which the check is applied. Default is none.

upth

Defines the ratio of the width of PMOS (pull-up) and the loading of MOSFETs (with gate connection). The load of transmission gate is also considered. The default value is 10.

downth

Defines the ratio of the width of NMOS (pull-down) and the loading of MOSFETs The default value is 20.

rcut

Cuts the resistor having value greater than rcut. The default value is 1e6.

error_limit

Maximum number of errors reported. Default is 10000.

inst

Subcircuit instances to which the check is applied. Default includes all instances (inst=*).

xinst

Subcircuit instances to be excluded from the check. Default is none.

subckt

The instances of the specified subcircuit to which the check is applied. Default includes all subcircuits (subckt=*).

xsubckt

The instances of the specified subcircuits that are excluded from the check. Default is none.

depth

Hierarchy levels (starting from top, instance, or subcircuit scope) to be checked. Default is 8.

Example

chk1 static_highfanout node=["*"] upth=10 downth=20

The above statement reports pMOSFETs whose loading-width to driving-width ratio is more than 10. In addition nMOSFETs whose loading-width to driving-width ratio is more than 20 are reported. The report includes the violation type, displaying if it is a pull-up violation, pull-down violation, or both.

The following is an example of the report that is displayed in the Web browser:

Workshop

A workshop or rapid adoption kit (RAK) is available that demonstrates the static and dynamic checks in Spectre. This RAK/workshop can be accessed from the following locations:


Return to top
 ⠀
X