Product Documentation
Spectre FX Circuit Simulator User Guide
Product Version 23.1, September 2023

4


Analyses Supported in Spectre FX

Spectre FX supports the following analyses:

DC Analysis

AC Analysis

Transient Analysis

Monte Carlo Analysis

Reliability Analysis

DC Analysis

The DC analysis finds the DC operating point or DC transfer curves of the circuit. To generate transfer curves, specify a parameter and a sweep range. The swept parameter can be circuit temperature, a device instance parameter, a netlist parameter, or a subcircuit parameter for a particular subcircuit instance.

You can sweep the circuit temperature by giving the parameter name as param=temp with no dev or sub parameter. You can sweep a top-level netlist parameter by giving the parameter name with no dev or sub parameter.

You can sweep a subcircuit parameter for a particular subcircuit instance by specifying the subcircuit instance name with the sub parameter and the subcircuit parameter name with the param parameter. After the analysis is complete, the modified parameter returns to its original value.

Syntax for DC Analysis

Name dc parameter=value ...

You can specify sweep limits by giving the end points or by providing the center value and the span of the sweep. Steps can be linear or logarithmic, and you can specify the number of steps or the size of each step. You can give a step size parameter (step, lin, log, dec) and determine whether the sweep is linear or logarithmic. If you do not give a step size parameter, the sweep is linear when the ratio of stop to start values is less than 10, and logarithmic when this ratio is 10 or greater. If you specify the oppoint parameter, Spectre FX computes and outputs the linearized model for each nonlinear component.

Nodesets help find the DC or initial transient solution. You can supply them in the circuit description file with nodeset statements, or in a separate file using the readns parameter. When nodesets are given, Spectre FX computes an initial guess of the solution by performing a DC analysis while forcing the specified values onto nodes by using a voltage source in series with a resistor whose resistance is rforce. Spectre FX then removes these voltage sources and resistors and computes the true solution from this initial guess.

Nodesets have two important uses:

When you simulate the same circuit many times, we suggest that you use both the write and readns parameters and give the same filename to both parameters. The DC analysis then converges quickly even if the circuit has changed somewhat since the last simulation, and the nodeset file is automatically updated.

AC Analysis

The AC analysis linearizes the circuit about the DC operating point and computes the response to all specified small sinusoidal stimulus.

The Spectre simulator can perform the analysis while sweeping a parameter. The parameter can be frequency, temperature, component instance parameter, component model parameter, or netlist parameter. If changing a parameter affects the DC operating point, the operating point is recomputed on each step. You can sweep the circuit temperature by giving the parameter name as temp with no dev or mod parameter. You can sweep a netlist parameter by giving the parameter name with no dev or mod parameter. After the analysis has completed, the modified parameter returns to its original value.

Syntax for AC Analysis

Name ac parameter=value ...

You can specify sweep limits by giving the end points or by providing the center value and the span of the sweep. Steps can be linear or logarithmic, and you can specify the number of steps or the size of each step. You can give a step size parameter (step,lin,log,dec) to determine whether the sweep is linear or logarithmic. If you do not give a step size parameter, the sweep is linear when the ratio of stop to start values is less than 10, and logarithmic when this ratio is 10 or greater. All frequencies are in Hertz.

The small-signal analysis begins by linearizing the circuit about an operating point. By default, this analysis computes the operating point if it is not known or recomputes it if any significant component or circuit parameter has changed. However, if a previous analysis computed an operating point, you can set prevoppoint=yes to avoid recomputing it. For example, if you use this option when the previous analysis was a transient analysis, the operating point is the state of the circuit on the final time point.

AC Analysis Parameters Supported by Spectre FX

Sweep Interval Parameters

Parameter Description

start

Start sweep limit

stop

Stop sweep limit

center

Center of sweep

span

Sweep limit span

step

Step size, linear sweep

lin

Number of steps, linear sweep

dec

Points per decade

log

Number of steps, log sweep

values

Array of sweep values

valuesfile

Name of the file containing the sweep values

Sweep Variable Parameters

Parameter Description

mod

Model whose parameter value is to be swept

param

Name of parameter to sweep

freq

Frequency when a parameter other than frequency is being swept

State-file Parameters

Parameter Description

readns

File that contains an estimate of the DC solution

write

DC operating point output file at the first step of the sweep

Initial condition Parameters

Parameter Description

force

The set of initial conditions to use. Possible values are none, node, dev, and all.

readforce

File that contains initial conditions

Output Parameters

Parameter Description

save

Signals to output. Possible values are all, lvl, allpub, lvlpub, selected, none, and no-output

Examples

The following examples show how you can use the various parameters to run AC analysis:

ac1 ac start=0 stop=10G step=2G
;; Runs an AC analysis ac1 at a linear sweep of frequencies from 0 to 10G with a step at each 2G
ac1 ac center=30M span=1M
;; Runs an AC analysis ac1 at swept frequencies spanning over 1M with center at 30M
ac1 ac start=0 stop=10G lin=100 //Number of steps = 101
; Runs an AC analysis ac1 at 100 steps starting from 0 to 10G. It runs a total of 101 steps
ac1 ac start=1 stop=10G dec=10
ac1 ac start=1 stop=10G log=50
ac1 ac values=[1M 100M 1G 5G 7G 9G 9.5G 10G]
ac1 ac valuesfile="ac_valuesfile.txt"
ac1 ac dev=v_pulse2 param=dc start=-0.1 stop=5.1 step=0.1 freq=1k
ac2 ac start=7.5e4 stop=8e4 step=1e3 mod=nch freq=1M param=vsat
ac2 ac freq=6G  param=Cap1 start=200f stop=300f lin=10 annotate=status 
ac_all ac start=1K stop=10G dec=10 force=all write="force_all.ac"
ac_none ac start=1K stop=10G dec=10 force=none  write="force_none.ac"
ac_node ac start=1K stop=10G dec=10 force=node write="force_node.ac"
ac_dev ac start=1K stop=10G dec=10 force=dev  write="force_dev.ac"
ac_readforce ac start=1K stop=10G dec=10 readforce="./force.ic" force=all
ac1 ac start=1 stop=10G dec=10 save Rind1

Transient Analysis

Spectre FX supports only a few parameters of the tran statement in Spectre. The supported parameters are used to save or recover state and output starting point. The parameters related to the solver are not supported.

Spectre FX supports the following transient analysis parameters:

All examples shown below are in Spectre syntax.

Simulation Interval Parameters for tran

stop (s)

Specifies the stop time for the transient analysis. The stop parameter must be specified in the tran statement.

Syntax

tran1 tran stop=tstop

start=0 s

Specifies the start time when the waveform is generated for the transient analysis. Although the simulation starts from 0s, the waveform is not generated before the specified start time. This parameter is the same as the outputstart parameter.

Syntax

Tran1 tran stop= tstop start=tstart

outputstart=start s

Specifies that the output be saved only after the time specified with the outputstart parameter is reached. The default value of outputstart is inherited from the parameter start.

Syntax

Tran1 tran stop=tstop outputstart=toutputstart

Initial Condition Parameters for tran

skipdc=no

If set to yes, there is no DC analysis for transient. In Spectre FX, only the values no and yes are supported. The default value is no.

Syntax

Tran1 tran stop=tstop skipdc=no | yes

Example

Tran1 tran stop=1m skipdc= yes

In the Spectre FX log file, the following message is displayed indicating that DC is skipped before the transient simulation.

Starting Skipping DC Simulation ...
Time for Skipping DC Simulation: CPU = 6.999 ms, elapsed = 452.995 us.

readic

Specifies the file that contains the initial condition (IC) information. The format of the IC file in Spectre syntax is different from that in SPICE syntax. The file specified in the SPICE syntax is invoked using the .include statement. The IC file for the parameters readic and readns is generated using the write parameter of the Spectre tran statement.

Syntax

tran1 tran stop=tstop readic=”filename.ic”

Convergence Parameter for tran

readns

Specifies the file that contains an estimate of the initial transient solution. For IC file reading using readic, the nodes voltages strictly follow the specified values at the beginning of the transient simulation; however, if you use readns, it just provides an initial guess for the operating point calculation. The final operating points can be different from the specified ones.

Syntax

Tran1 tran stop=tstop readns=”filename.ic”

State-File Parameters for tran

write

Specifies the file to which the initial transient solution needs to be written at t=0s of the transient analysis.

Syntax

Tran1 tran stop=tstop write=”filename.ic”

savetime=[...]

Saves the analysis states to files at the specified time points.

Syntax

Tran1 tran stop=tstop savetime=[point1 point2pointN]

Example

The top level netlist save_state.scs contains the following:

tran1 tran stop=10m savetime=[1m 1.5m 2.03m]

In the directory of output files, the state files are saved as follows:

save_state.scs.save_state.srf_at_1.00ms
save_state.scs.save_state.srf_at_1.50ms
save_state.scs.save_state.srf_at_2.03ms

savefile

Specifies the name of the savestate files.

Syntax

tran-name tran stop=tstop savefile=”filename”

Example

The top level netlist save_state.scs contains the following:

tran1 tran stop=10m savetime=[1m 1.5m 2.03m] savefile="ss_file"

In the directory of output files, the state files are saved as follows:

ss_file_at_1.00ms
ss_file_at_1.50ms
ss_file_at_2.03ms

recover

Specifies the file to be restored. The transient simulation does not start from t=0s, but from the time point where the statefile was saved. The recover file can also be defined using the command-line option +recover.

Syntax

tran-name tran stop=tstop recover="filename"

Example

tran1 tran stop=10m recover="ss_file_at_1.00ms"

The Spectre FX log file indicates the transient simulation is recovered and resumed at 1ms, as shown below.

Transient Analysis `recover': time = (1 ms -> 10 ms)
***************************************************
Important parameter values:
start = 1 ms
outputstart = 1 ms
stop = 10 ms
temp = 25 C
tnom = 25 C
Recovering from save-restart file ss_file_at_1.00ms,
Restarting at time 1 ms.

Strobe Output Parameters for tran

skipstart=0 s

The time to start skipping output data.

Example:

tran1 tran stop=10u strobestart=1u strobeperiod=1/1e9/64

The value of strobeperiod is the expression '1/1e9/64'=15.625ps and the strobe output starts from 1us.

skipstop=stop s

The time to stop skipping output data.

strobeperiod=0 s

The output strobe interval (in seconds) of transient time.

strobedelay=0 s

The delay (phase shift) between the skipstart time and the first strobe point.

strobeoutput=strobeonly

Specifies which time points to output during strobe. Possible values are strobeonly, all, and none.

strobestep=0 s

Equivalent to strobeperiod.

strobefreq

The reciprocal of strobeperiod (strobestep).

strobestart=0 s

Equivalent to skipstart.

strobestop=stop s

Equivalent to skipstop.

strobetimes=[...] s

Times in ascending order when strobe output was performed.

Dynamic Parameters for tran

param=param_name

Dynamic parameter name. The parameter name can be a design parameter, maxstep, speed or temp.

Syntax

tran-name tran stop=tstop param= param_name param_vec=[ t1 val1 t2 val2...]

Example

tran1 tran stop=10u param=temp param_vec=[0n 20 50n 25 100n 75]
tran1 tran stop=10u param=speed param_vec=[0n lx 50n mx]

param_vec=[ t1 val1 t2 val2...]

Time points and values of the parameter.

param_file=file

File name if the param_vec is defined in a separate file.

paramset

Name of the dynamic parameter set.

Monte Carlo Analysis

The montecarlo analysis is a swept analysis with associated child analyses similar to the sweep analysis, see spectre -h sweep. The Monte Carlo analysis refers to statistics blocks, where statistical distributions and correlations of netlist parameters are specified.

For each iteration of the Monte Carlo analysis, new pseudorandom values are generated for the specified netlist parameters (according to their specified distributions) and the list of child analyses are then executed.

The Monte Carlo option allows for scalar measurements to be linked with the Monte Carlo analysis. Calculator expressions are specified that can be used to measure circuit output or performance values (such as the slew rate of an operational amplifier). During a Monte Carlo analysis, these measurement statement results vary as the netlist parameters vary for each Monte Carlo iteration and are stored in a scalar data file for post processing. By varying the netlist parameters and evaluating these measurement statements, the Monte Carlo analysis becomes a tool that allows you to examine and predict circuit performance variations that affect yield.

The statistics blocks allow you to specify batch-to-batch (process) and per- instance (mismatch) variations for netlist parameters. These statistically varying netlist parameters can be referenced by models or instances in the main netlist and can represent IC manufacturing process variation or component variations for board-level designs. The following description gives a simplified example of the Monte Carlo analysis flow:

perform nominal run if requested
if any errors in nominal run then stop
for each Monte Carlo iteration {
if process variations specified then
apply “process” variation to parameters
if mismatch variations specified then
for each subcircuit instance {
apply “mismatch” variation to parameters
}
   for each child analysis { 
run child analysis
evaluate any export statements and
store results in a scalar data file
}
}

The following is the syntax for the Monte Carlo analysis:

Name montecarlo parameter=value ... {
analysis statements ...
export statements ...
}

The Monte Carlo analysis:

Related Topics

Monte Carlo Parameters Supported by Spectre FX

Specifying the First Iteration Number

Specifying Parameter Distributions Using Statistics Blocks

Multiple Statistics Blocks

Specifying Distributions

Distributed Monte Carlo Analysis

Monte Carlo Parameters Supported by Spectre FX

Monte Carlo Analysis Parameters

numruns=100

Number of Monte Carlo iterations to perform (not including nominal).

firstrun=1

Starting iteration number.

runpoints=[...]

Specifies the iteration indices to be simulated. Two types of

settings are accepted; integers and ranges. For example, runpoints=[10 range(15, 18) 20] is an acceptable setting. It specifies that simulation needs to be performed for the 10th, 15th, 16th, 17th, 18th, and 20th iterations.

variations=process

Level of statistical variation to apply. Possible values are process, mismatch, or all.

sampling=standard

Method of statistical sampling to apply. Possible values are standard, lhs, and lds.

seed

Optional starting seed for random number generator.

scalarfile

Output file that will contain output scalar data.

paramfile

Output file that will contain output scalar data labels.

dut=[...]

If set, then the specified subcircuit or device instances will have process and mismatch variations applied, the unspecified instances will only have process variations applied. All subcircuits or devices instantiated under this instance will also have process and mismatch variations enabled. By default, mismatch variation is applied to all subcircuit or device instances in the design and process is applied globally. This parameter allows the testbench to change and not affect the variations seen by the actual design.

ignore=[...]

If set, no variation is applied to the specified subcircuit or device instance(s). All subcircuits or devices instantiated under this instance will also have no variation enabled. By default, mismatch is applied to all subcircuit or device instances in the design and process is applied globally.

Saving Process Parameters

saveprocessparams

Whether or not to save scalar data for statistically varying process parameters which are subject to process variation. Possible values are no or yes.

processscalarfile

Output file that will contain process parameter scalar data.

processparamfile

Output file that will contain process parameter scalar data labels.

Saving Mismatch Parameters

dumpdependency

Whether or not to save the dependency map. Possible values are none and mismatch.

dependencyscalarfile

Output random numbers to a file that are used by mismatch parameters.

dependencyparamfile

Output the mapping from the mismatch parameters to the corresponding subcircuit instances to a file.

Flags

donominal=yes

Whether or not to perform nominal run. Possible values are no or yes.

nullmfactorcorrelation=no

Controls the mismatch variation correlation of parallel devices defined by m-factor. If set to yes, devices are assumed to get uncorrelated mismatch variations. If set to no, devices are assumed to get the same mismatch variation. Possible values are no and yes.

savefamilyplots=no

Whether or not to save data for family plots. If yes, this could require a lot of disk space. Possible values are no or yes.

savedatainseparatedir=no

Whether or not to save data for an each plot in a separate directory. Possible values are no or yes.

Setting this parameter to yes may require a lot of disk space.

evaluationmode=no

If set to yes, dumps random numbers used in montecarlo analysis without running any enclosed analyses. Possible values are no and yes.

wfseparation=no

If set to yes, a separate directory for nominal run is created by the name nom and the directory names of individual iterations are simplified by removing the leading analysis names. Possible values are no and yes.

usesamesequence=no

If set to yes, the random sequence is maintained for a seed even if there is an empty dut/ignore list. Possible values are no or yes.

Annotation Parameters

ignoremode

Controls the type of variation that is applied to ignored devices when variations = all. By default, the variation seen by ignored devices depends on whether the dut or ignore parameter is used.

If dut is used, then all non-DUT devices will get process variation.

If the ignore parameter is used, then devices in the ignore list will use nominal values, that means the devices have no variation.

When ignoremode = nominal | process, the behavior is consistent for both dut and ignore.

If ignoremode = nominal, then all devices in the ignore list or devices that are not in the dut list will use nominal values.

If ignoremode = process, all devices in the ignore list or devices that are not in the dut list have process variation.

Possible values are default, nominal, process and both.

Specifying the First Iteration Number

The advantages of using the firstrun parameter to specify the first iteration number are as follows:

Specifying Parameter Distributions Using Statistics Blocks

The statistics blocks are used to specify the input statistical variations for a Monte Carlo analysis. A statistics block can contain one or more process blocks (which represent batch- to-batch type variations) and/or one or more mismatch blocks (which represent on-chip or device mismatch variations), in which the distributions for parameters are specified. Statistics blocks can also contain one or more correlation statements to specify the correlations between specified process parameters and/or to specify correlated device instances (such as matched pairs). Statistics blocks can also contain a truncate statement that can be used for generating truncated distributions.

The statistics block contains the distributions for parameters:

When the same parameter is subject to both process and mismatch variations, the sampled process value becomes the mean for the mismatch random number generator for that particular parameter.

Note: Statistics blocks can be specified using combinations of the Spectre FX keywords statistics, process, mismatch, vary, truncate, and correlate. Braces ({}) are used to delimit blocks.

The following example shows some sample statistics blocks, which are discussed after the example along with syntax requirements.

The following example shows some sample statistics blocks, which are discussed after the example along with syntax requirements.

// define some netlist parameters to represent process parameters 
// such as sheet resistance and mismatch factors
parameters rshsp=200 rshpi=5k rshpi_std=0.4K xisn=1 xisp=1 xxx=20000 uuu=200
// define statistical variations, to be used 
// with a MonteCarlo analysis.
statistics {
process { // process: generate random number once per MC run
vary rshsp dist=gauss std=12 percent=yes
vary rshpi dist=gauss std=rshpi_std // rshpi_std is a parameter
vary xxx dist=lnorm std=12
vary uuu dist=unif N=10 percent=yes
...
}
mismatch { // mismatch: generate a random number per instance
vary rshsp dist=gauss std=2
vary xisn dist=gauss std=0.5
vary xisp dist=gauss std=0.5
}
// some process parameters are correlated
correlate param=[rshsp rshpi] cc=0.6
// specify a global distribution truncation factor
truncate tr=6.0 // +/- 6 sigma
}
//  a separate statistics block to specify correlated (i.e. matched) 
//components
// where m1 and m2 are subckt instances.
statistics {
correlate dev=[m1 m2] param=[xisn xisp] cc=0.8
}
//  a separate statistics block to specify correlation with wildcard, where 
// `I*.M3' matches multiple subckt instances, for examples, I1.M3, I2.M3, I3.M3, etc..
// Only the asterisk (*) is recognized as a valid wildcard symbol.
statistics { 
    correlate dev=[ I*.M3 ] param=[misx mixy] cc=0.8 
}
You can specify the same parameter (for example, rshsp) for both process and mismatch variations.

In the process block, the process parameter rshsp is varied with a Gaussian distribution, where the standard deviation is 12 percent of the nominal value (percent=yes). When percent is set to yes, the value for the standard deviation (std) is a percentage of the nominal value. When percent is set to no, the specified standard deviation is an absolute number. This means that parameter rshsp should be varied with a normal distribution, where the standard deviation is 12 percent of the nominal value of rshsp. The nominal or mean value for such a distribution is the current value of the parameter just before the Monte Carlo analysis starts. If the nominal value of the parameter rshsp was 200, the preceding example specifies a process distribution for this parameter with a Gaussian distribution with a mean value of 200 and a standard deviation of 24 (12 percent of 200). The parameter rshpi (sheet resistance) varies about its nominal value with a standard deviation of 0.4 K-ohms/square.

In the mismatch block, the parameter rshsp is then subject to further statistical variation on a per-subcircuit instance basis for on-chip variation. Here, it varies a little for each subcircuit instance, this time with a standard deviation of 2. For the first Monte Carlo run, if there are multiple instances of a subcircuit that references parameter rshsp, then (assuming variations=all) it might get a process random value of 210, and then the different instances might get random values of 209.4, 211.2, 210.6, and so on. The parameter xisn also varies on a per-instance basis, with a standard deviation of 0.5. In addition, the parameters rshsp and rshpi are correlated with a correlation coefficient (cc) of 0.6.

The .mcdat file, by default, displays the following statistics parameters in the Statistics section: max, min, mean, variance, stddev, avgdev, avgdev, and failedtimes. You can set the mc_stat_list option parameter to all to output all statistical parameters in the file.

The following is an example of the .mcdat file. The parameters in blue are added when you set the value of mc_stat_list to all.

Statistics:

max             1.68571e-08     27              4.42243e-09
min             1.39394e-08     27              4.03428e-09
mean            1.55027e-08     27              4.19754e-09
variance        3.36186e-19     0               7.31927e-21
stddev          5.79816e-10     0               8.55527e-11
avgdev          4.67287e-10     0               6.99047e-11
skewness        0.0611099       NaN             0.260798
kurtosis        -0.213995       NaN             -0.403713
Q1              1.50883e-08     27              4.13173e-09
median          1.55056e-08     27              4.19708e-09
Q3              1.58615e-08     27              4.25678e-09
CI_mean_2.5%    1.53877e-08     27              4.18057e-09
CI_mean_97.5%   1.56178e-08     27              4.21452e-09
CI_stddev_2.5%  5.09082e-10     0               7.51159e-11
CI_stddev_97.5% 6.73558e-10     0               9.93845e-11
failedtimes     0               0               0

Multiple Statistics Blocks

You can use multiple statistics blocks, which accumulate or overlay each other. Typically, process variations, mismatch variations, and correlations between process parameters are specified in a single statistics block. This statistics block can be included in a “process” include file, such as the ones shown in the example in “Process Modeling Using Inline Subcircuits”. A second statistics block can be specified in the main netlist where actual device instance correlations are specified as matched pairs.

The following statistics block can be used to specify the correlations between matched pairs of devices and probably is placed or included into the main netlist by the designer. These statistics are used in addition to those specified in the statistics block in the preceding section so that the statistics blocks “overlay” or “accumulate.”

// define correlations for "matched" devices q1 and q2
statistics {
  correlate dev=[q1 q2] param=[XISN...] cc=0.75 
}
You can use a single statistics block containing both sets of statements; however, it is often more convenient to keep the topology-specific information separate from the process-specific information.

Specifying Distributions

Parameter variations are specified using the following syntax:

vary PAR_NAME dist=type {std=<value> | N=<value>} {percent=yes|no} 

Three types of parameter distributions are available: Gaussian, log normal, and uniform, corresponding to the type keywords gauss, lnorm, and unif, respectively. For both gauss and the lnorm distributions, you specify a standard deviation using the std keyword.

You can also specify a global parameter as a value for dist. For example:
parameters DIST_snd=gauss
statistics {
 process {
  vary AGIDL_snd dist=DIST_snd std=1
 }
}

The following distributions (and associated parameters) are supported:

Derived parameters that have their default values specified as expressions of other parameters cannot have distributions specified for them. Only parameters that have numeric values specified in their declaration can be subjected to statistical variation.

Parameters that are specified as correlated must have had an appropriate variation specified for them in the statistics block.

For example, if you have the parameters

XISN=XIS+XIB

you cannot specify distribution for XISN or a correlation of this parameter with another.

The percent flag indicates whether the standard deviation std or uniform range N are specified in absolute terms (percent=no) or as a percentage of the mean value (percent=yes). For parameter uuu in the example in Specifying Parameter Distributions Using Statistics Blocks the mean value is 200, and the variation is 200 +10%*(200), that is, 200 + 20. For parameter rshsp, the process variation is given by Normal( 200, 12%*(200) ), that is, Normal(200, 24). Cadence recommends that you do not use the percent=yes with the log normal distribution.

Changing Parameter Distributions at Runtime

At times, you might want to reproduce the design failures with less MonteCarlo iterations and check the design robustness quickly. You can use the dist=default|unif|gauss parameter to force all parameter distributions to a specified type. In addition, you can use the stdscale parameter scale the deviation by a specified value.

The following examples show how to use stdscale and dist options to force a parameter distribution to the specified type.

By transforming the Gaussian distribution to Uniform, you can identify the design failure at high sigma-corner with small number of samples. However, you cannot predict the yield of the design with this approach.

Truncation Factor

The default truncation factor for Gaussian distributions (and for the Gaussian distribution underlying the log normal distribution) is 4.0 sigma. Randomly generated values that are outside the range of mean + 4.0 sigma are automatically rejected and regenerated until they fall inside the range. If the truncation factor is less than 0, Spectre does not generate truncated distributions and generates a warning. If the truncation factor is specified as 0, then Spectre generates an error.

You can change the truncation factor using the truncate statement. The following is the syntax:

truncate tr=value

The value of the truncation factor can be a constant or an expression. In addition, you can specify the truncation factor in the process and mismatch blocks. However, if the truncation factor is not specified in the process or mismatch block, then the truncation factor in the statistics block is considered.

Parameter correlations can be affected by using small truncation factors.

Correlation Statements

There are two types of correlation statements that you can use:

Correlation coefficients can be constants or expressions, as can std and N when specifying distributions.

Characterization and Modeling

The following statistics blocks can be used with the example in “Process Modeling Using Inline Subcircuits”parameters statement. These statistics blocks are meant to be used in conjunction with the modeling and characterization equations in the inline subcircuit example, for a Monte Carlo analysis only.

statistics {
process {
vary RSHSP dist=gauss std=5
vary RSHPI dist=lnorm std=0.15
vary SPDW dist=gauss std=0.25
vary SNDW dist=gauss std=0.25
}
correlate param=[RSHSP RSHPI] cc=0.6
mismatch {
vary XISN dist=gauss std=1
vary XBFN dist=gauss std=1
vary XRSP dist=gauss std=1
}
}
statistics {
correlate dev=[R1 R2] cc=0.75
correlate dev=[TNSA1 TNSA2] cc=0.75
}

Creating same variation for same block in different simulations

At times, it may be necessary to use the same variation of a design in different simulations. This can be achieved by using identical subcircuit and instance definitions for the design in both simulations, and by ordering the netlist with the options statement, as shown below.

opt1 options sortinstance=yes

Distributed Monte Carlo Analysis

If a Monte Carlo analysis is defined in the netlist and the +mp <numprocesses> command- line option is used, Spectre FX automatically detects the farm environment (LSF, SGE, RTDA, or Network Computer) and distributes the montecarlo analysis to the specified number of child processes. If a farm environment is not detected, Spectre FX uses the fork option to distribute a Monte Carlo analysis by creating multiple jobs on a single system.

Spectre FX supports distribution of Monte Carlo and Sweep analyses; however, any subset analysis defined within the Monte Carlo or Sweep analysis is not distributed.

You cannot use relative path (such as scalarfile=../monteCarlo/mcdata) to specify the location of file in distributed montecarlo. This is because distributed results are saved in the root directory. If you use a relative path to specify the location, all child processes will refer to the same directory.

Reliability Analysis

Spectre reliability analysis for Hot-Carrier Injection (HCI), Negative Bias Temperature Instability (NBTI), and Positive Bias Temperature Instability (PBTI) modules is a two-phase simulation flow. The first phase, fresh and stress simulation, calculates the device age or degradation. The second phase, post-stress or aging simulation, simulates the degradation effect on the circuit performance based on the device degradation information obtained during the first phase of stress simulation.

The syntax is as follows:

Name reliability [global_options]{
reliability control statements
stress statements
aging/post-stress statements
}

Reliability Parameters Supported by Spectre FX

The following table describesthe reliability parameters supported with Spectre FX.

Parameter Description

age time

The time in future when the transistor degradation and degraded SPICE model parameters are to be calculated.

report_model_param value

Specifies whether to print the stress and aged parameters in the.bm# file.

Possible values are no and yes.

accuracy level

Specifies the methods used in the reliability simulation when performing integration and substrate current calculation.

Possible values are 1 and 2.

minage value

Specifies the smallest age value for which degraded SPICE model parameters are calculated.

igatemethod type

Specifies the method used for obtaining the gate currents of MOSFETs.

Possible values are calc and spice.

isubmethod type

Specifies the method used for obtaining the substrate currents of MOSFETs.

Possible values are calc and spice.

opmethod type

Specifies whether the Igate or Isub value is obtained from the SPICE models, such as BSIM3 and BSIM4 or from the internal Igate or Isub equation.

Possible values are calc and spice.

enable_negative_age value

Enables negative age value.

Possible values are no and yes.

idmethod type

Specifies how the simulator obtains the drain current (Id) of MOSFETs to perform reliability calculations.

Possible values are ids, idrain and idstatic.

enable_ade_process value

Enables reliability analysis in ADE Explorer or ADE Assembler.

Possible values are no and yes.

tmi_she_mindtemp value

Specifies the minimum delta temperature for self-heating flow.

rel_mod type

Specifies the analysis type used for obtaining the device reliability values.

Possible values are aging, she, all, aging_she and aging_thermal.

relxtran start

Specifies the start time of reliability analysis during transient simulation.

urilib file

Specifies the name of the URI library file.

urilib uri_mode

Specifies the method to be used for performing aging simulation.

Possible values are agemos, scaleparam, appendage, new_appendage, appendage2 and appendage1.

urilib debug

Specifies the debug mode for URI library. The value can be either 0 or a positive value. When specified, a flag is added to the URI library indicating whether to print the debug information. If debugMode is not set to 0, the debug messages are printed.

Default value is 0.

urilib scale_mode

Specifies parameter scale mode for URI library. The value can be original or effective. If value is original, send original parameter value to URI for param scale, else send effective value.

Possible values are original and effective.

tmi_aging_mode

Specifies the mode of TMI aging flow.

Possible values are aging, she, and all.

Reliability Models for Spectre FX

Spectre FX supports the following reliability models:

Reliability Feature Support Matrix for Spectre FX

This matrix applies to SPECTRE 23.1 and subsequent ISR versions.

Flow Name Two Netlist Flow One Netlist Flow
Age only SHE only RT SHE AGE + SHE

Appendage

Yes

No

No

No

No

TMI

Yes

Yes

Yes

Yes

No

EM-IR

No

Yes

Yes

No

No

Note that the maskdev control statement is not supported in Spectre FX.


Return to top
 ⠀
X