This topic discusses different methods to reduce the time devoted to simulating the analog sections of a design.
Adjusting Speed and Accuracy
When you use the Spectre solver, you can use the errpreset parameter to increase the speed of transient analyses, but this speed increase requires some sacrifice of accuracy. The greatest speedup comes from using errpreset=liberal. Greater accuracy, but lower speed, can be obtained by using errpreset=moderate, or errpreset=conservative.
Saving Time by Selecting a Continuation Method
The Spectre ® AMS Designer simulator analog solver normally starts with an initial estimate and then tries to find the solution for an analog circuit using the Newton-Raphson method. If this attempt fails, the simulator automatically tries several continuation methods to find a solution and tells you which method was successful. Continuation methods modify the circuit so that the solution is easy to compute and then gradually change the circuit back to its original form. Continuation methods are robust, but they are slower than the Newton-Raphson method.
If you need to modify and resimulate a circuit that was solved with a continuation method, you probably want to save simulation time by directly selecting the continuation method you know was previously successful.
You select the continuation method with the homotopy parameter of the set or options statements. In addition to the default setting, all, you can set the parameter to: gmin stepping (gmin), source stepping (source), the pseudotransient method (ptran), and the damped pseudotransient method (dptran). You can also prevent the use of continuation methods (none).
Specifying Efficient Starting Points
The Spectre AMS Designer Simulator's analog solver arrives at a solution for a simulation by calculating successively more accurate estimates of the final result. You can increase simulation speed by providing state information (the current or last-known status or condition of a process, transaction, or setting) to the transient analysis. You can specify two kinds of state information:
- Initial conditions
Theicstatement lets you specify voltages on nodes for the starting point of a transient analysis. In the Verilog ® -AMS source, you can specify voltages on capacitors and currents on inductors.
- Nodesets
Nodesets are estimates of the solution you provide for the transient analysis. Unlike initial conditions, nodeset values have no effect on the final results. Nodesets usually act only as aids in speeding convergence, but if a circuit has more than one solution, as with a latch, nodesets can bias the solution to the one closest to the nodeset values.
Setting Initial Conditions
You can specify initial conditions that apply to the transient analysis. The ic statement and the ic parameter described in this section set initial conditions for the transient analysis in the netlist. In general, you use the ic parameter of individual components to specify initial conditions for those components, and you use the ic statement to specify initial conditions for nodes. You can specify initial conditions for inductors with either method.
ic parameter for individual components with the ic parameter of the transient analysis. The latter lets you select from among different initial condition specifications for a given transient analysis.- Specifying initial conditions for components
You can specify initial conditions in the instance statements of capacitors, inductors, and windings for magnetic cores. Theicparameter specifies initial voltage values for capacitors and current values for inductors and windings. In the following Verilog-AMS example, the initial condition voltage on the capacitor is set to two volts:
capacitor #(.c(1u),.ic(2)) c1 (net1,net2) ;
- Specifying initial conditions for nodes
You use theicstatement in the analog simulation control file to specify initial conditions for nodes or initial currents for inductors. The nodes can be inside a subcircuit or internal nodes to a component.
The following is the format for theicstatement:ic signalName=value …
For example,sets the following initial conditions:
ic Voff=0 X3.n7=2.5 M1:int_d=3.5 L1:1=1u
- The voltage of node
Voffis set to 0.
- Node
n7of subcircuitX3is set to 2.5 V.
- The internal drain node of component
M1is set to 3.5 V. (See the following table for more information about specifying internal nodes.)
- The current for inductor
L1is set to 1μ.
Specifying initial node voltages requires some additional discussion. The following table tells you the internal node voltage specifications you can use with different components.
|
Component |
Internal node specifications |
|---|---|
|
BJT |
int_c, int_b, int_e |
|
BSIM |
int_d, int_s |
|
MOSFET |
int_d, int_s |
|
GaAs MESFET |
int_d, int_s, int_g |
|
JFET |
int_d, int_s, int_g, int_b |
|
Winding for Magnetic Core |
int_Rw |
|
Magnetic Core with Hysteresis |
flux |
