Product Documentation
Spectre Circuit Simulator Reference
Product Version 23.1, September 2023

Dynamic Floating Node Statistical Check (dyn_float_tran_stat)

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

- Transient simulation is run till ping_start.

- Qualified nodes are identified to exercise pings according to domains

- For each qualified node, domain_voltage is evaluated

- Pings are created randomly using seed value. One third of the qualified nodes are selected for HIGH. One third of qualified nodes are selected for LOW. One third of qualified nodes are selected for RAMP.

- ping_duration and ping_resistor are evaluated

- Pings are applied sequentially at ping_start.

- For each ping:

- All MOSFET drain currents and BJT collector currents are stored as reference current (Iref) right before applying the ping

- For the first half of ping_duration:

- HIGH/LOW to each node is forced through a resistor with ping_resistor value.

- Device current (Iping) is checked at 0.95 of 0.5*ping_duration. A fail is detected if:

|Iref-Iping| > max(pingibsthresh, pingirelthresh * min(|Iref|,|Iping|))

- For the second half of ping_duration:

- The RAMP is forced to each node through a resistor with the ping_resistor value and the maximum (Iping,max) and minimum (Iping,min) device current is checked during the RAMP. A fail is detected in any of the following cases:

|Iref-Iping,max| > max(pingiabsthresh_ramp, pingirelthresh*min(|Iref|,|Iping,max|))

|Iref-Iping,min| > max(pingiabsthresh_ramp, pingirelthresh*min(|Iref|,|Iping,min|))

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, Spectre APS modes. It is not supported in Spectre XPS FastSPICE , Spectre XPS SPICE, and Spectre XPS MS modes.

Syntax

Name dyn_float_tran_stat parameter=value ...

Parameters

Design check parameters

domains

[...]

Pairs of power supply domains in which floating nodes are checked. Example: domains=[VDD VSS VPP VSS]. Domain also defines domain voltage (domain_voltage) value for forcing node voltages. Default is none. Wildcarding is not allowed.

ping_start

[...]

Time at which the check is initiated.

ping_count

300

Number of statistical periods being used. Default is 300.

ping_duration

0

Duration of a ping. A ping consists of two phases: high/low forcing phase and ramp up forcing phase. Length of each phase is half of ping_duration. Default is none..

ping_iabsthresh

1

Current threshold for device violation during high/low forcing (first phase). Specify a value and a list of instance name and value pairs in the format [value0 [inst1 value1 inst2 value2 ... ]]. If inst value pairs are not specified, value0 is used for MOSFETs and BJTs in all domains. If an inst value pair is specified, the given value is used for all MOSFETs and BJTs of the given inst. For all other MOSFETs and BJTs, value0 is used. Each value must be a number. It cannot be a netlist parameter or a mathematical expression. If value0 is not specified, the default value 1 indicates that the default value is domain_voltage/ping_resistance.

ping_iabsthresh_ramp

1

Current threshold for device violation during ramp forcing (second phase). Specify a value and a list of instance name and value pairs in the format [value0 [inst1 value1 inst2 value2 ... ]]. If inst value pairs are not specified, value0 is used for MOSFETs and BJTs in all domains. If an inst value pair is specified, the given value is used for all MOSFETs and BJTs of the given inst. For all other MOSFETs and BJTs, value0 is used. Each value must be a number. It cannot be a netlist parameter or a mathematical expression. If value0 is not specified, the default value 1 indicates that the default value is 100*domain_voltage/ping_resistance.

ping_irelthresh

1000

Relative threshold for floating node detection for both high/low and ramp forcing. Default is 1000.

seed

Seed for random number generation. Default is none.

domain_voltage_thresh

0.0

Lowest threshold for domain voltage. If a node has voltage less than domain_voltage_thresh, it will be excluded from ping. Default is 0.0.

save

no

To probe gate voltage of MOSFETs, base voltage of BJTs, drain current of MOSFETs and collector current of BJTs. When value is set to ping, netlist or all, a new waveform file will be written in raw directory. The format of this new waveform file will be <CheckName>_<PingStart>.tran.tran, where <CheckName> is the name of check statement and <PingStart> is the time specified in ping_start parameter. The waveform will start from PingStart until ping simulation is finished. If save=ping,only save ping voltages and mos/bjt currents, if save=netlist, only save the ones saved in the netlist, if save=all,both of signals in the save=ping and the ones saved in the netlist are saved, Default is no.Possible values are ping, no, all and netlist.

distribute

no

Distribute method.Possible values are no, fork and lsf.

numprocesses

0

Number of processes for distributed analysis.

report_top_current

0

number of top n devices with the largest leakage current to be reported.When set to 0,report will contain all devices.

ping_duration_max

0

maximum value of ping_duration applied. Default is none.

ping_resistor_max

10e+9

Maximum value of ping_resistor applied. Specify a value and a list of instance name and value pairs in the format [value0 [inst1 value1 inst2 value2 ... ]]. If inst value pairs are not specified, value0 is used in all domains. If an inst value pair is specified, the given value is used at all ports and nodes of the given inst. For all other nodes, value0 is used. Each value must be a number. It cannot be a netlist parameter or a mathematical expression.

ping_resistor_min

100e+6

Minimum value of ping_resistor applied. Specify a value and a list of instance name and value pairs in the format [value0 [inst1 value1 inst2 value2 ... ]]. If inst value pairs are not specified, value0 is used in all domains. If an inst value pair is specified, the given value is used at all ports and nodes of the given inst. For all other nodes, value0 is used. Each value must be a number. It cannot be a netlist parameter or a mathematical expression.

time_constant

6

time constant. Default is 6.0.

domain_detection_method

dev

Domain detection, find the ping nodes through device or node.Possible values are dev and node.

stop_nodes

[...]

stop nodes during domain tracking. Default is none.

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.

node

[...]

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

xnode

[...]

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

ping_voltage_thresh

0

Threshold for ping voltage.

ping_index

[...]

Selectively re-ping a circuit with a list of pings.

domain_detection_voltage_atol

1e-20

Voltage tolerance for volatge-based domain detection.

ping_timeout

0

Interrupt any individual ping if it takes longer than ping_timeout. The specified time must be a CPU time. Units is in seconds. Default is none.

freeze

no

When set to yes, independent source is frozen during ping simulation. The value of independent source throughout a ping simulation is constant. The constant value is equal to the value of independent source at ping_start.Possible values are no and yes.


Return to top
 ⠀
X