Convergence Difficulties (convergence)
Description
If you are having convergence difficulties, try the following suggestions:
- Evaluate and resolve any notice, warning, or error messages.
- Ensure that the topology checker is being used (set topcheck=full on options statement) and heed any warnings it generates.
-
Perform sanity check on the parameter values by using the parameter range checker (use
+param param-limits-fileas a command line argument) and heed any warnings. Print the minimum and maximum parameter value by usinginfoanalysis. Ensure that the bounds given for instance, model, output, temperature-dependent, and operating-point (if possible) parameters are reasonable. - Small floating resistors connected to high impedance nodes can cause convergence difficulties. Avoid small floating resistors, particularly small parasitic resistors in semiconductors. Instead, use voltage sources or iprobes to measure current.
- Use realistic device models. Check all component parameters, particularly nonlinear device model parameters, to ensure that they are reasonable.
- Increase the value of gmin (on options statement).
-
Loosen tolerances, particularly absolute tolerances like
iabstol(on options statement). If tolerances are set too tight, they might preclude convergence. - Try to simplify the nonlinear component models to avoid regions that might contribute to convergence problems in the model.
DC Convergence Suggestions
After you have a solution, write it to a nodeset file by using the write parameter, and read it back in on subsequent simulations by using the readns parameter.
-
If you have an estimate of what the solution should be, use
nodesetstatements or a nodeset file, and set as many nodes as possible. -
If convergence difficulties occur when using nodesets or initial conditions, try increasing
rforce(on options statement). -
If this is not the first analysis and the solution from the previous analysis is far from the solution for this analysis, set
restart=yes. - If simulating a bipolar analog circuit, ensure that the region parameter on all transistors and diodes is set correctly.
-
If the analysis fails at an extreme temperature, but succeeds at room temperature, try adding a DC analysis that sweeps temperature. Start at room temperature, sweep to the extreme temperature, and write the final solution to a
nodesetfile. -
Use numeric pivoting in the sparse matrix factorization by setting
pivotdc=yes(on options statement). Sometimes, it is also necessary to increase the pivot threshold to a value in the range of 0.1 to 0.5 by usingpivrel(on options statement). - Divide the circuit into smaller pieces and simulate them individually. However, ensure that the results are close to what they would be if you had simulated the whole circuit. Use the results to generate nodesets for the whole circuit.
- Check the connections to ground. Convergence problems might result if there are no connections to ground.
-
If all else fails, replace the DC analysis with a transient analysis and modify all the independent sources to start at zero and ramp to their DC values. Run transient analysis well beyond the time when all the sources have reached their final value (remember that transient analysis is cheap when none of the signals in the circuit are changing) and write the final point to a
nodesetfile. To make transient analysis more efficient, set the integration method to backward Euler (method=euler) and loosen the local truncation error criteria by increasinglteratio, say to 50. Occasionally, this approach fails, or is slow because the circuit contains an oscillator. Often, for finding the dc solution, the oscillation can be eliminated by setting the minimum capacitance from each node to ground (cmin) to a large value.
Transient Convergence Suggestions
- Ensure that a complete set of parasitic capacitors is used on nonlinear devices to avoid jumps in the solution waveforms. On MOS models, specify nonzero source and drain areas.
-
Use the
cminparameter to install a small capacitor from every node in the circuit to ground. This usually eliminates any jump in the solution.
Return to top