Transient Analysis (tran)
Description
This analysis computes the transient response of a circuit over the interval from start to stop. The initial condition is taken to be the DC steady-state solution, if not otherwise given.
Syntax
Name tran parameter=value ...
Parameters
Simulation interval parameters
|
stop
|
(s)
|
Stop time.
|
|
tpoints
|
[...] s
|
Multiple of pairs<pstep, stop>.
|
|
start
|
0 s
|
Start time.
|
|
pstep
|
(s)
|
print step.
|
|
outputstart
|
start s
|
Output is saved only after this time is reached.
|
|
autostop
|
no
|
If yes, the analysis is terminated when all event-type measurement expressions have been evaluated. Event-type expressions use thresholding, event, or delay type functions. If the value is spice, autostop is consistent with spice simulator. Possible values are no, yes and spice.
|
Time-step parameters
|
maxstep
|
(s)
|
Maximum time step. The default is derived from errpreset.
|
|
step
|
0.001*(stop-start) s
|
Minimum time step used by the simulator solely to maintain the aesthetics of the computed waveforms.
|
|
minstep
|
(s)
|
Minimum time step. If specified, the error tolerance requirements may be ignored when step size is less than minstep.
|
|
istep
|
0.001*(stop-start) s
|
When step size is greater than istep, the local truncation error checking is enabled for algebraic nodes.
|
Initial-condition parameters
|
ic
|
all
|
The value to be used to set the initial condition. Possible values are dc, node, dev and all.
|
|
skipdc
|
no
|
If set to yes, there is no DC analysis for transient. Possible values are no, yes, useprevic, waveless, rampup, autodc and sigrampup.
|
|
rampupratio
|
0.1
|
The rampup ratio for skipdc=rampup and sigrampup.
|
|
rampuptime
|
(s)
|
The rampup time for skipdc=rampup. The default value is set to rampupratio*stop.
|
|
readic
|
|
File that contains initial condition.
|
|
useprevic
|
no
|
If set to yes or ns, use the converged initial condition from previous analysis as ic or ns. Possible values are no, yes and ns.
|
|
linearic
|
no
|
Enable linear IC method to calculate initial conditions automatically from a type of stability analysis in the range [0.5*oscfreq, 1.5*oscfreq]. Overrides user-defined initial conditions if instability is detected. Possible values are no and yes.
|
|
oscfreq
|
0.0
|
Estimation of the oscillation frequency when linear IC method is enabled.
|
Convergence parameters
|
readns
|
|
File that contains an estimate of the initial transient solution.
|
|
cmin
|
0 F
|
Minimum capacitance from each node to ground.
|
State-file parameters
|
write
|
|
File to which initial transient solution is to be written.
|
|
writefinal
|
|
File to which final transient solution is to be written.
|
|
ckptperiod
|
|
Checkpoint the analysis periodically by using the specified period.
|
|
saveperiod
|
|
Save the tran analysis periodically on the simulation time.
|
|
saveperiodhistory
|
no
|
Maintains the history of saved files. If yes, maintains all the saved files. Possible values are no and yes.
|
|
saveclock
|
(s)
|
Save the tran analysis periodically on the wall clock time. The default is 1800s for Spectre. This parameter is disabled in the APS mode by default.
|
|
savetime
|
[...]
|
Save the analysis states into files on the specified time points.
|
|
savefile
|
|
Save the analysis states into the specified file.
|
|
recover
|
|
Specify the file to be restored.
|
Integration method parameters
|
method
|
|
Integration method. The default is derived from errpreset. Possible values are euler, trap, traponly, gear2, gear2only, trapgear2 and trapeuler.
|
Emir output parameters
|
emirformat
|
none
|
Format of the EM/IR database file. Possible values are none and vavo.
|
|
emirstart
|
(s)
|
EM/IR start time.
|
|
emirstop
|
(s)
|
EM/IR stop time.
|
|
emirfile
|
|
Name of the EM/IR database file. The default is '%A_emir_vavo.db'. The file is output to raw directory.
|
|
emirtimewindows
|
[...]
|
Time check windows of emir. Array should have an even number of values [b_begin1 b_end1 b_begin2 b_end2 ...], the priority is higher than 'emirstart' and 'emirstop'.
|
Accuracy parameters
|
errpreset
|
|
Selects a reasonable collection of parameter settings. Possible values are liberal, moderate and conservative.
|
|
relref
|
|
Reference used for the relative convergence criteria. The default is derived from errpreset. Possible values are pointlocal, alllocal, sigglobal and allglobal.
|
|
lteratio
|
|
Ratio used to compute LTE tolerances from Newton tolerance. The default is derived from errpreset.
|
|
fastbreak
|
no
|
If yes, VHDLAMS Break statement is handled using faster Verilog method. Possible values are no and yes.
|
|
d2aminstep
|
0
|
Minimum stepsize that can be taken when there is a D2A event. If this is zero, the simulators min step size is chosen.
|
|
fastcross
|
cm
|
Specifies how VerilogA @cross, @above functions and AMSDesigner connect modules impact the time step control. no ... enforces time step at exact crossing point, discrete ... optimized time step control with best accuracy/performance trade-off, cm ... same as discrete for Spectre, but further performance optimization of connect modules in AMSD, yes ... better performance with cross function tolerances relaxed.. Possible values are no, yes, discrete and cm.
|
|
transres
|
1e-9*stop s
|
Transition resolution. The transient analysis attempts to stop at corners of input waveforms (for example, corners of rising/falling edge of a pulse). If such events occur within a time less than transres, the analysis combines the events into one and forces only one time point. The rest of the steps are determined by error control. This may lead to loss of detail.
|
|
lteminstep
|
0.0 s
|
Local truncation error is ignored if the step size is less than lteminstep.
|
|
ltethstep
|
1e-12 s
|
LTE tolerance can be relaxed for signal with discontinuity when step size is less than ltethstep.
|
|
d2atimetol
|
0
|
Time tolerance for D2A events. The smaller the value, the closer the time when the analog solver actually executes the d2a event may be to the time when the event gets reported.
|
|
vrefmax
|
|
Upper limit of the voltage reference for relative error calculation.
|
|
irefmax
|
|
Upper limit of the current reference for relative error calculation.
|
|
vrefbins
|
[1 3 5 10]
|
Specifies the voltage bins when bin_relref=yes is used. Default setting is vrefbins=[1 3 5 10].
|
|
irefbins
|
[1e-6 1e-5 1e-4 1e-3 1e-2 1e-1]
|
Specifies the current bins when bin_irelref=yes is used. Default setting is irefbins=[1e-6 1e-5 1e-4 1e-3 1e-2 1e-1].
|
|
resetref
|
no
|
If yes, reset reference voltages/currents. Possible values are no and yes.
|
Annotation parameters
|
annotate
|
sweep
|
Degree of annotation. Possible values are no, title, sweep, status, estimated, steps, iters, detailed, rejects, alliters, detailed_hb and internal_hb.
|
|
annotateic
|
no
|
Degree of annotation for initial condition. Possible values are no, title, sweep, status, estimated, steps, iters, detailed, rejects and alliters.
|
|
annotatedigits
|
4
|
number of significant digits for annotate tran time. Possible values are 0, 1, 2 ...16. If set to 0, the number of significant digits is dynamic according to current time and step. If set to n (n = 1, 2 ...16), the number is equal to n..
|
|
title
|
|
Analysis title.
|
Output parameters
|
save
|
|
Signals to output. Possible values are all, lvl, allpub, lvlpub, selected, none and nooutput.
|
|
nestlvl
|
|
Levels of subcircuits to output.
|
|
oppoint
|
no
|
Should operating point information be computed for initial timestep; if yes, where should it be printed (screen or file). Possible values are no, screen, logfile and rawfile.
|
|
skipstart
|
0 s
|
The time to start skipping output data.
|
|
skipstop
|
stop s
|
The time to stop skipping output data.
|
|
skipcount
|
1
|
Save only one of every skipcount points.
|
|
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 performed.
|
|
progress_t
|
|
Print out the annotate message every interval specified by progress_t in terms of minutes. Note that this degrades performance.
|
|
progress_p
|
|
Print out the annotate message every progress_p percent of transient time. Note that this degrades performance.
|
|
compression
|
no
|
Perform global waveform compression. Possible values are no, all, wildcardonly and yes.
|
|
comppreset
|
moderate
|
Defines waveform compression accuracy. Possible values are moderate, conservative and liberal.
|
|
compref
|
pointlocal
|
Reference used for relative error criteria in waveform compression. Possible values are alllocal, pointlocal, sigglobal and abstol.
|
|
compvabstol
|
1.0e-3 V
|
Absolute voltage tolerance for waveform compression.
|
|
compiabstol
|
1.0e-12 A
|
Absolute current tolerance for waveform compression.
|
|
comppwrabstol
|
1.0e-15 W
|
Absolute power tolerance for waveform compression.
|
|
compreltol
|
0.001
|
Relative tolerance for waveform compression.
|
|
complvl
|
|
Enables waveform compression for specified hierarchy level and below (top level=1). All levels above specified level are not compressed. Complvl has higher priority than global compression statement.
|
|
flushpoints
|
|
Periodically flush all unwritten data from the buffer to the outputs after calculating the specified number of points.
|
|
flushtime
|
(s)
|
Periodically flush unwritten data from the buffer to the outputs after the specified time has elapsed.
|
|
flushofftime
|
(s)
|
Real time to stop flushing outputs.
|
|
flushpercent
|
|
Flush unwritten data in the buffer to outputs for every X% of the transient progress.
|
|
infonames
|
[...]
|
Names of info analyses to be performed at the time point in the infotimes array.
|
|
infotimes
|
[...] s
|
Times when the analysis specified by infonames is performed.
|
|
infotime_pair
|
yes
|
If set to yes, there is a 1:1 correspondence between the values in infonames and in infotimes. For example, infonames[0] will be run at infotimes[0], infonames[1] will be run at infotimes[1], etc. If set to no, all analysis in infonames will be run at each infotimes time. Possible values are no and yes.
|
|
acnames
|
[...]
|
Names of ac, noise, sp, stb, xf, or lf analyses to be performed at each time point in the actimes array. The named small-signal analyses are not run separately, but only as part of the transient analysis.
|
|
actimes
|
[...] s
|
Times when analyses specified in acname array are performed.
|
|
actime_pair
|
yes
|
If set to yes, there is a 1:1 correspondence between the values in acnames and in actimes. For example, acnames[0] will be run at actimes[0], acnames[1] will be run at actimes[1], etc. If set to no, all analysis in acnames will be run at each actimes time. Possible values are no and yes.
|
Newton parameters
|
maxiters
|
5
|
Maximum number of iterations per time step.
|
|
dcmaxiters
|
150
|
Maximum number of dc iterations in tranFindInitialState.
|
|
restart
|
yes
|
Restart the DC solution from scratch if any condition has changed. If not, use the previous solution as initial guess. Possible values are no and yes.
|
Circuit age
|
circuitage
|
(Years)
|
Stress time. Age of the circuit used to simulate hot-electron degradation of MOSFET and BSIM circuits.
|
Transient noise parameters
|
trannoisemethod
|
default
|
use this option to enable the adaptive noise step control. Possible values are default and adaptive.
|
|
noisefmax
|
0 Hz
|
The bandwidth of pseudorandom noise sources. A valid (nonzero) noisefmax turns on the noise sources during transient analysis. The maximum time step of the transient analysis is limited to 0.5/noisefmax.
|
|
noisescale
|
1
|
Noise scale factor applied to all generated noise. Can be used to artificially inflate the small noise to make it visible above transient analysis numerical noise floor, but it should be small enough to maintain the nonlinear operation of the circuit .
|
|
noiseseed
|
|
Seed for the random number generator. Should be positive integer. Specifying the same seed allows you to reproduce a previous experiment.
|
|
mc_auto_noiseseed
|
no
|
Regenerate the seed at every monte carlo iteration using same mechanism. Possible values are yes, no. Default is no.. Possible values are no and yes.
|
|
noisefmin
|
1 Hz
|
If specified, the power spectral density of the noise sources depends on the frequency in the interval from noisefmin to noisefmax. Below noisefmin, the noise power density is constant. If noisefmin=noisefmax, then only white noise would be included, and noise sources are evaluated only at noisefmax for all models. 1/noisefmin should be smaller than the requested time duration of transient analysis.
|
|
noiseon
|
[...]
|
The list of instances to be considered as noisy during transient noise analysis.
|
|
noiseoff
|
[...]
|
The list of instances to be considered as not noisy during transient noise analysis.
|
Dynamic parameters
|
param
|
|
Name of the parameter to be updated to a different value with time during tran. You can use param=isnoisy with param_vec=[...] to turn On or Off the transient noise in time windows. For example, param=isnoisy param_vec=[0ns 0 100ns 1 500ns 0 ] . The transient noise is OFF (param value is 0) from time 0 to 100ns and the noise is ON (param value is 1) from 100ns to 500ns and OFF from 500ns to stop time.
|
|
paramset
|
|
Name of the dynamic parameter set.
|
|
param_vec
|
[...] s
|
The time_value points to param=name.
|
|
param_file
|
|
The file that contains the time_value points to param=name.
|
|
sub
|
|
Name of the subcircuit instance parameter specified in param=name.
|
|
mod
|
|
Name of the device model parameter specified in param=name.
|
|
dev
|
|
Name of the device instance parameter specified in param=name.
|
|
param_step
|
|
Defines the frequency of updating the dynamic parameter values. If param_step=0, it updates the parameter value at a given time point.
|
|
paramsetfile
|
|
The file that contains the paramset data used for dynamic parameter change using event-triggered analysis.
|
|
steppreset
|
|
Used to dynamically change time-step control related settings in Spectre X. Example: tr1 tran stop=10u param=steppreset param_vec=[0 vx 3u mx]. Possible values are cx, ax, mx, lx and vx.
|
|
speed
|
|
Used to dynamically change time-step control related settings in Spectre FX. Example: tr1 tran stop=10u param=speed param_vec=[0 vx 3u mx]. Possible values are cx, ax, mx, lx, vx and sx.
|
Fault analysis parameters
|
faulttimes
|
[...] s
|
Fault times in ascending time order where transient fault analysis is performed. 'faulttimes' is required parameter for TFA, and optional for DFA. 'faultstart/faultstep/faultstop', 'faultevent', or 'faultfile' can be used as an alternative.
|
|
faultstep
|
(s)
|
The time interval between the fault times.
|
|
faultstart
|
0 s
|
The start time, or the first fault time, of transient fault analysis.
|
|
faultstop
|
stop s
|
The stop time, or the last fault time, of transient fault analysis.
|
|
faultfile
|
|
Name of the file that contains the fault times in ascending time order for transient fault analysis.
|
|
faultevent
|
[...] s
|
Events to perform transient fault analysis.
|
|
faultautostop
|
no
|
Auto-stop fault analysis when the fault is detected based on assert violation. Possible values are no, func, check, both and all.
|
|
faultdetratio
|
|
Auto-stop fault simulation when the specified detection ratio achieved.
|
|
faultconfidlevel
|
|
Auto-stop fault simulation when the specified detection ratio achieved with given confidence level.
|
|
faultskipdc
|
yes
|
Enforce skipdc=yes during fault analysis when no solution found during initial DC analysis. Possible values are no and yes.
|
|
faultstrobe
|
no
|
Time point strobe will be enabled during fault analysis. Possible values are no and yes.
|
|
faultmethod
|
linear
|
Simulation method used for transient fault analysis. Possible values are linear, maxiters, onestep, leadtime, testpoint and timezero.
|
|
faulttablefmt
|
txt
|
Format of fault table file. Possible values are txt and bin.
|
|
faults
|
[...]
|
Names of the fault blocks from the fault list to perform transient fault analysis. Default value is faults=[*].
|
|
faultsid
|
[...]
|
Indexes of faults from the list to perform fault analysis. If specified, simulation performed for requested subset of fault list.
|
|
faultsname
|
[...]
|
Names of faults from the list to perform fault analysis. If specified, simulation performed for requested subset of fault list.
|
|
faultsinst
|
[...]
|
List of instances to perform fault analysis. If specified, simulation performed only for faults within given instances.
|
|
faultsamplenum
|
|
Number of samples in random sampling of fault list during simulation.
|
|
faultsampleratio
|
[R1 R2]
|
A set of two values R1 and R2 (in percentage) to simulate the samples between the given range. 'faultsampleratio=R' is equivalent to 'faultsampleratio=[0 R]'.
|
|
faultseed
|
1
|
Optional starting seed for random number generator during fault sampling.
|
|
faultsamplemethod
|
random
|
Method to be used for fault sampling. Possible values are random, randomweighted, randomuniform and weightsorted.
|
|
faultsamplereplace
|
yes
|
Perform fault sampling with sample replacement during fault analysis. Possible values are no and yes.
|
|
faultsort
|
yes
|
Perform fault simulation according to the order in the fault list. If 'no', random order applied. Possible values are no and yes.
|
|
faultcollapse
|
no
|
Perform fault collapsing in the list before fault simulation. Possible values are no and yes.
|
|
faultduplicate
|
yes
|
Perform fault simulation for all faults from the list. If 'no', identical and equivalent faults will be excluded from simulation. Possible values are no and yes.
|
|
faultsave
|
testpoints
|
Set of data to be saved during transient fault analysis. Possible values are testpoints, all and none.
|
|
faultddm
|
|
File containing the command line options to run 'spectre_ddmrpt' when fault simulation finished.
|
|
faultdb
|
|
File name to save fault simulation data in the format specified by 'faultfmt'.
|
|
faultfmt
|
|
File format to save fault simulation data. Possible values are csv, xl and sql.
|
|
faultleadtime
|
[...] s
|
The lead time intervals where the fault will be injected before the fault time when faultmethod=leadtime.
|
|
faultmaxiters
|
|
Maximum number of iterations per time step for transient fault analysis. Default is 50 for fault method 'maxiters', 10 for 'onestep', and 5 for other methods.
|
|
faultlimiting
|
log
|
Limiting algorithm to aid Newton convergence during transient fault simulation. Possible values are delta, log, dev and none.
|
|
faultrampsteps
|
0
|
Maximum number of steps for fault conductance stepping to improve convergence after fault injection with method 'maxiters'. Recommended value faultrampsteps=10.
|
|
faultlimsteps
|
yes
|
Auto stop slow simulation for the faults taking above average number of time steps. Possible values are no and yes.
|
|
faultmaxsteps
|
|
Maximum steps allowed to perform one fault simulation. Simulation auto-stops if not finished earlier than specified step count.
|
|
faultlimtime
|
|
Maximum elapsed time allowed to perform one fault simulation (in hours). Simulation auto-stops if not finished earlier than specified time.
|
|
faultsafecheck
|
no
|
Enable auto-stop during the nominal simulation when the assert with 'safecheck' specified has been violated. Possible values are no and yes.
|
|
faultrampinterval
|
0
|
The coefficient (between 0 and 1) to define the size of time interval to ramp fault conductance after fault injection when 'faultmethod=leadtime' specified.
|
|
faultic
|
no
|
Perform dc analysis after fault injection as initial conditions for transient fault analysis. Possible values are no, bridge, open, custom, param, all and yes.
|
|
faultactivestart
|
0
|
The time to begin circuit activity tracing for fault list generation.
|
|
faultactivevabstol
|
0.1
|
The minimum voltage value to consider an element as active for fault list generation.
|
|
faultactiveiabstol
|
1e-6
|
The minimum current value to consider an element as active for fault list generation.
|
Custom errpreset parameters
|
maxstepratio
|
|
Maximum time step ratio for custom 'errpreset'.
|
|
reltolratio
|
|
Reltol ratio for custom 'errpreset'.
|
|
thermal_node_window
|
[...]
|
Time windows of thermal node analysis. Array should have an even number of values [b_begin1 b_end1 b_begin2 b_end2 ...], currently it only supports one time window.
|
|
msgSuppress
|
[...]
|
Used to change the message severity threshold after the given time point, messages are suppressed if the run time is after the given time point and its severity is below the threshold. Arguments should have pairs of time and message severity, supported message severity are 'none', 'notice', 'warning', 'error'. 'none' means suppress nothing. Example: tr1 tran stop 100u msgSuppress=[10u notice 20u warning 30u error 60u none ...]The message severity threshold becomes invalid after tran analysis is finished..
|
You can specify the initial condition for the transient analysis by using the ic statement or the ic parameter on the capacitors and inductors. If you do not specify the initial condition, the DC solution is used as the initial condition. The ic parameter on the transient analysis controls the interaction of various methods of setting the initial conditions. The effects of individual settings are as follows:
ic=dc: All initial conditions are ignored, and the DC solution is used.
ic=node: The ic statements are used, and the ic parameter on the capacitors and inductors is ignored.
ic=dev: The ic parameters on the capacitors and inductors are used, and the ic statements are ignored.
ic=all: Both ic statements and ic parameters are used, and the ic parameters override the ic statements.
If you specify an initial condition file with the readic parameter, initial conditions from the file are used, and any ic statements are ignored.
After you specify the initial conditions, Spectre computes the actual initial state of the circuit by performing a DC analysis. During this analysis, Spectre forces the initial conditions on nodes by using a voltage source in series with a resistor whose resistance is rforce (see options).
With the ic statement, it is possible to specify an inconsistent initial condition (one that cannot be sustained by the reactive elements). Examples of inconsistent initial conditions include setting the voltage on a node with no path of capacitors to ground, or setting the current through a branch that is not an inductor. If you initialize Spectre inconsistently, its solution jumps, that is, it changes instantly at the beginning of the simulation interval. You should avoid such changes because Spectre can have convergence problems while trying to make the jump.
You can skip DC analysis entirely by using the parameter skipdc. If DC analysis is skipped, the initial solution is trivial or is given in the file that you specified by using the readic parameter, or if the readic parameter is not specified, by the values specified on the ic statements. Device-based initial conditions are not used for skipdc. Nodes that you do not specify with the ic file or ic statements start at zero. You should not use this parameter unless you are generating a nodeset file for circuits that have trouble in the DC solution; it usually takes longer to follow the initial transient spikes that occur when the DC analysis is skipped than it takes to find the real DC solution. The skipdc parameter might also cause convergence problems in the transient analysis.
The possible settings of parameter skipdc and their descriptions are as follows:
skipdc=no: Initial solution is calculated using normal DC analysis (default).
skipdc=yes: Initial solution is given in the file specified by the readic parameter or the values specified on the ic statements.
skipdc=useprevic: Initial solution obtained from the previous analysis is used.
skipdc=waveless: Same initial solution as skipdc=yes, but the waveform production in the time-varying independent sources is disabled during the transient analysis. Independent source values are fixed to their initial values (not their DC values).
skipdc=rampup: Independent source values start at 0 and ramp up to their initial values from start to rampuptime. If rampuptime is not given, rampuptime will be set to rampupratio*stop. After that their values remain constant. Zero initial solution is used.
skipdc=autodc: Same as skipdc=waveless if a nonzero initial condition is specified. Otherwise, same as skipdc=rampup.
skipdc=sigrampup: Independent source values start at 0 and ramp up to their initial values in the first phase of the simulation. Unlike skipdc=rampup, the waveform production in the time-varying independent source is enabled after the rampup phase. The rampup simulation is from the 'start' parameter. If the start parameter is not specified, the default start time is set to -rampupratio*stop.
Nodesets help find the DC or the initial transient solution. You can specify nodesets in the circuit description file with nodeset statements or in a separate file by using the readns parameter. When nodesets are specified, Spectre computes an initial guess of the solution by performing DC analysis, while forcing the specified values on to nodes by using a voltage source in series with a resistor whose resistance is rforce. Spectre then removes these voltage sources and resistors and computes the required solution from this initial guess.
Nodesets have two important uses. First, if a circuit has two or more solutions, nodesets can bias the simulator towards computing the required solution. Second, this is a convergence aid. By estimating the solution of the largest possible number of nodes, you might be able to eliminate a convergence problem or significantly speed up convergence.
When you simulate the same circuit multiple times, it is recommended that you use both write and readns parameters and assign the same file name to both parameters. DC analysis then converges quickly even if the circuit has changed since the last simulation, and the nodeset file is automatically updated.
Nodesets and initial conditions have similar implementation, but produce different effects. Initial conditions define the solution, whereas nodesets only influence it. When you simulate a circuit with a transient analysis, Spectre forms and solves a set of differential equations. Because differential equations have an infinite number of solutions, a complete set of initial conditions must be specified to identify the required solution. Any initial conditions that you do not specify are computed by the simulator to be consistent. The transient waveforms then start from initial conditions. Nodesets are usually used as a convergence aid and do not affect the final results. However, in a circuit with more than one solution, such as a latch, nodesets bias the simulator towards finding the solution closest to the nodeset values.
The method parameter specifies the integration method. The possible settings and their meanings are as follows:
method=euler: Backward-Euler is used exclusively.
method=traponly: Trapezoidal rule is used almost exclusively.
method=trapeuler: Backward-Euler and the trapezoidal rule are used.
method=gear2only: Gear's second-order backward-difference method is used almost exclusively.
method=gear2: Backward-Euler and second-order Gear are used.
method=trapgear2: Allows all three integration methods to be used.
method=trap: An advanced version of trap that uses all three integration methods.
The trapezoidal rule is usually the most efficient when you want high accuracy. This method can exhibit point-to-point ringing, but you can control this by tightening the error tolerances. For this reason, though, if you choose very loose tolerances to get a quick answer, the backward-Euler or second-order Gear will probably give better results than the trapezoidal rule. Second-order Gear and backward-Euler can make systems appear more stable than they really are. This effect is less pronounced with second-order Gear or when you request high accuracy.
Several parameters determine the accuracy of the transient analysis. reltol and abstol control the accuracy of the discretized equation solution. These parameters determine how well charge is conserved and how accurately steady-state or equilibrium points are computed. You can set the integration errors in the computation of the circuit dynamics (such as time constants), relative to reltol and abstol by setting the lteratio parameter.
The parameter relref determines how the relative error is treated. The relref options are as follows:
relref=pointlocal: Compares the relative errors in quantities at each node to that node alone.
relref=alllocal: Compares the relative errors at each node to the largest values found for that node alone for all past time.
relref=sigglobal: Compares relative errors in each circuit signal to the maximum for all signals at any previous point in time.
relref=allglobal: Same as relref=sigglobal, except that it also compares the residues (KCL error) for each node to the maximum of each node's past history.
The errpreset parameter lets you adjust the simulator parameters to fit your needs quickly. You can set errpreset to conservative if the circuit is very sensitive, or you can set it to liberal for a fast, but possibly inaccurate, simulation. The setting errpreset=moderate suits most needs.
The effect of errpreset on other parameters is shown in the following table. In this table, T= stop - start.
errpreset reltol relref method maxstep lteratio
--------------------------------------------------------------------
liberal * 10 sigglobal trapgear2 Interval/50 3.5
moderate sigglobal traponly Interval/50 3.5
conservative * 0.1 alllocal gear2only Interval/100 10.0
The default value for errpreset is moderate.
The value of reltol is increased or decreased from its value in the options statement, but it is not allowed to be larger than 0.01. Spectre sets the value of maxstep so that it is no larger than the value given in the table. Except for reltol and maxstep, errpreset does not change the value of any parameters you have explicitly set. The actual values used for the transient analysis are given in the log file.
'errpreset' also controls the LTE Check:
Liberal Moderate Conservative
--------- ----------- ------------
LTE Check Caps/Inds Loose nodes strict nodes
It controls how the simulator follows signals other than capacitor voltages and inductor currents. When errpreset=liberal, the timestep is not controlled to follow these signals. When errpreset=moderate, the timestep is reduced to follow large changes in these signals. When errpreset=conservative, the timestep is reduced to follow small changes in these signals.
If the circuit you are simulating has infinitely fast transitions (for example, a circuit that contains nodes with no capacitance), Spectre might have convergence problems. To avoid this, you must prevent the circuit from responding instantaneously. You can accomplish this by setting cmin, the minimum capacitance to ground at each node, to a physically reasonable nonzero value. This often significantly improves Spectre convergence.
Spectre provides two methods for reducing the number of output data points saved: strobing, based on the simulation time, and skipping time points, which saves only every N'th point.
The parameters strobeperiod and strobedelay control the strobing method.strobeperiod sets the interval between the points that you want to save, and strobedelay sets the offset within the period relative to skipstart. The simulator forces a time step on each point to be saved, so that the data is computed, and not interpolated.
The skipping method is controlled by skipcount. If this is set to N, only every N'th point is saved.
The parameters skipstart and skipstop apply to both data reduction methods. Before skipstart and after skipstop, Spectre saves all computed data.
If you do not want any data saved before a given time, use outputstart. If you do not want any data saved after a given time, change the stop time.
Dynamic Parameters during Transient Analysis
The parameters defined in the Dynamic parameters section allows you to change temperature, design parameters or some option parameters (reltol, residualtol, vabstol, iabstol, and isnoisy) during transient simulation.
Example1: change temperature during tran with param_step=0(default).
tran1 tran stop=0.5u param=temp param_vec=[0ns 20 50ns 25]
In this tran run, the temperature is 20C from 0ns-50ns, then it changes to 25C at 50ns.After tran is done, the temperature is reset back to its default value.
You can also define time value pairs in a file and give the file name through parameter param_file.
The format of the file is defined as follows:
; comments
tscale tscale_value
time value
20 50.0
30 60.0
where, the comment line starts with a semicolon (;), tscale is a keyword, and tscale_value is a value, such as 1.0e-6 or 1.0e-9 that is applied to each time point under the time column. time and value are two key words that identify the time and value columns. The values under the time column define the time points and each time point is scaled by tscale_value. The values under the value column define the values for the dynamic parameter.
Note that no unit is supported in the file format.
Example2: change temperature during tran with param_step=10ns
tran1 tran stop=0.5u param=temp param_vec=[0ns 20 50ns 25] param_step=10ns
In this tran run, the temperature is interpolated with slope (25-20)/(50ns-0ns) and updated every param_step (10ns).
Example3: change design parameter.
tran1 tran stop=0.5u param=gain sub=x1 param_vec=[0 5 1u 20]
Example4: turn On and Off transient noise in time windows.
tran1 tran stop=0.5u noisefmax=10G noiseseed=1
param=isnoisy param_vec=[0ns 0 100ns 1 500ns 0 ]
The transient noise is OFF from time 0 to 100ns. Noise is ON from 100ns to 500ns and noise is OFF from 500ns to stop time.
The default value for compression is no. The output file stores data for every signal at every time point for which Spectre calculates a solution. Spectre saves the X-axis data only once, because every signal has the same x value. If compression=all, Spectre writes data to the output file only if the signal value changes by at least two times the convergence criteria. To save data for each signal independently, X-axis information corresponding to each signal must be saved. If the signals stay at constant values for large periods of the simulation time, setting compression=all results in a smaller output data file. If the signals in your circuit move around a lot, setting compression=all results in a larger output data file. The compvabstol, compiabstol and comppwrabstol can be used to control output compression abstol for voltage, current and power respectively. The possible value (alllocal, pointlocal, sigglobal and abstol) of compression in transient statement will be deprecated in the next release.
Return to top