LTspice Troubleshooting Guide
Diagnosing and fixing convergence failures, performance issues, and common simulation problems.
Table of Contents
- Diagnostic Information Collection
- Convergence Problems — Symptoms
- Common Sources of Convergence Failure
- Debugging with Convergence Reports
- Fix the Circuit
- Improve DC Operating Point Convergence
- Improve Transient Convergence
- Integration Methods
- Use Initial Conditions (UIC)
- Waveform Compression
- Steady-State Detection
- Memory and Performance
- Sweep Directive Errors
- Blank Bode Plot After .FRA
Diagnostic Information Collection
When troubleshooting LTspice issues (especially FRA, convergence, or model-related problems), collect this diagnostic information first:
1. LTspice Version
- Go to Help → About LTspice
- Note the full version string (e.g., “Version (x64): 26.0.2”)
2. Component Library Update Status
- Check date of most recent model update by going to Help → Show Model Change Log
- The most recent entry shows the last update date
- Note the date of the last successful update
- If outdated (>30 days), run the update (Tools → Update Components) before continuing troubleshooting
3. SPICE Settings
- Go to Tools → Settings
- Click the SPICE settings tab
- Screenshot or document all settings, especially:
- Integration method (Trapezoidal vs. Gear)
- Maximum timestep
- Any custom tolerance settings (abstol, reltol, gmin, etc.)
- Convergence-related options (cshunt, gshunt, itl4)
4. Error Messages and Logs
- Go to View → SPICE Output Log (Ctrl+L)
- Copy the full error output, especially:
- Convergence failure messages
- Time step information
- Problem instance/node names
- Any warnings about models or components
5. Circuit Context
- Note what analysis is failing (DC op point, transient, AC, etc.)
- If transient: at what simulation time does failure occur?
- Recent changes to circuit before problem appeared
- Whether the issue is reproducible
Convergence Problems — Symptoms
Simulation Stops with Errors
| Error Message | Meaning |
|---|---|
Time step too small |
Simulator cannot find a solution at the current timepoint |
Singular matrix |
Circuit topology problem (floating node, voltage source loop) |
Iteration limit reached |
Exceeded max Newton-Raphson iterations |
Failure to find initial operating point |
Cannot solve DC bias point |
Example error output:
Convergence Failure: Time step too small; time = 1.0005e-06, timestep = 1.25e-19: trouble with instance "A2"
Simulation Failed: Iteration limit reached
Simulation Runs but is Slow
- Very small time steps / slow transient speed
- Very slow pseudo-transient while finding operating point
- Borderline circuits may converge or fail depending on minor changes
Common Sources of Convergence Failure
- Discontinuities in I-V curve — abrupt changes in device behavior
- Instantaneous changes — zero rise/fall times
- Discontinuities in first derivative — kinks in device characteristics
- Extremely high-impedance nodes — nodes with zero capacitance to ground
- Immediate local feedback — behavioral sources feeding back instantaneously
Debugging with Convergence Reports
Enable convergence reporting to identify problem devices and nodes:
.tran 10u convreport
Or add as a simulator option:
.options debugtran
Reading the Report
The report assigns difficulty scores to devices and nodes:
Device Convergence Difficulty Score:
m5:gcapgd : 55.276382
m3:gcapgd : 54.522613
Node Convergence Difficulty Score:
s3#current : 76.884422
s4#current : 61.557789
Interpretation:
- Scores below 1: negligible, ignore
- Scores above ~50: problematic, investigate these devices/nodes
- Higher scores = more convergence difficulty
Note: Enabling convergence reports slows the simulation.
Fix the Circuit
These circuit-level changes resolve most convergence problems:
1. Add Capacitance to High-Impedance Nodes
Even tiny capacitance (1f to 1p) helps the simulator:
C_fix high_z_node 0 1f
2. Avoid Discontinuities
Ideal diodes: Add/increase the epsilon parameter or increase Ron:
.model MySwitch SW(Vt=0 Vh=-0.1 Ron=10m)
Logic gates: Always define trise (10n is a good starting point):
A1 in 0 0 0 0 out 0 0 BUF Trise=10n
Avoid extreme non-physical values (e.g., diode emission coefficient n=0.001).
3. Avoid Instantaneous Feedback
- Don’t model a capacitor with a behavioral current source — use Nonlinear Capacitor (
Q=syntax) - Don’t connect logic gate output directly back to its input without delay
4. Add Series Resistance to Signal Sources
V1 in 0 PULSE(0 5 0 1n 1n 0.5u 1u) Rser=1 Cpar=1p
Not recommended for power supplies or when monitoring source current.
Improve DC Operating Point Convergence
Try these in order (least to most aggressive):
Circuit Directives
| Method | Syntax | Description |
|---|---|---|
| Nodeset | .nodeset V(node)=<val> |
Suggest initial guess (recommendation only) |
| Initial condition | .ic V(node)=<val> |
Force initial node voltage |
| Startup ramp | .tran 1m startup |
Ramp external sources from zero over first 20u |
Simulator Options
| Option | Default | Try | Effect |
|---|---|---|---|
solver |
norm | alt | Higher precision (slower) |
abstol |
1e-12 | 1e-10 | Loosen current tolerance |
reltol |
0.001 | 0.005 | Loosen relative tolerance |
gmin |
1e-12 | 1e-10 | More conductance on PN junctions |
gshunt |
0 | 1e-15 | Conductance from every node to ground |
Example:
.options gshunt=1e-15 reltol=0.003
.ic V(vout)=3.3 V(sw_node)=12
Improve Transient Convergence
Simulator Options (listed in recommended order to try)
Increasing the value of these numerical options (except itl4) sacrifices accuracy for the sake of convergence.
| Option | Default | Try | Effect |
|---|---|---|---|
method |
trap | gear | Gear dampens oscillations (slower) |
itl4 |
10 | 50 | More iterations per timepoint |
cshunt |
0 | 1e-15 | Capacitance from every node to ground |
abstol |
1e-12 | 1e-10 | Loosen current tolerance |
gshunt |
0 | 1e-15 | Conductance from every node to ground |
reltol |
0.001 | 0.005 | Loosen relative tolerance |
maxstep |
tstop/1024 | explicit | Limit maximum step size |
solver |
norm | alt | Higher precision solver |
Example:
.options method=gear itl4=50 cshunt=1f
State Save/Load for Partial Relaxation
Temporarily loosen tolerances for startup, then reload state and continue with tight tolerances. Only one .tran command can be active at a time — comment out the previous one for each run:
; Run 1: loose tolerances to get past startup
.options reltol=0.01
.tran 1m savestate
; Run 2: comment out the above .tran, then use:
; .options reltol=0.001
; .tran 10m loadstate
Integration Methods
LTspice offers two integration methods (set via .options method=):
Trapezoidal (trap) — Default
- Fastest for equivalent accuracy
- Most accurate
- Can produce “trap ringing” — oscillations timestep-to-timestep around true solution
Gear
- Requires more time steps for same accuracy
- Generally slower
- Imposes artificial numerical dampening
- Warning: Can make unstable circuits appear stable in simulation
- Use when trap ringing is problematic
Recommendation: Start with default (trap). Switch to gear if you see ringing artifacts or need additional convergence help.
Use Initial Conditions (UIC)
.tran 1m uic
What it does: Skips DC operating point analysis and uses user-specified initial conditions on components.
Why it’s NOT recommended:
- Creates nonphysical initial state
- Voltage source in parallel with uncharged capacitor → infinite current in first timestep
- Often results in “time step too small” errors
- Not a viable workaround for DC operating point convergence problems
When to use: Only when you specifically need to study startup behavior from a known initial state and have properly set all initial conditions.
Better alternatives for operating point problems:
.nodeset/.icdirectivesstartupmodifier.optionsadjustments (see above)loadstatefrom a previous successful simulation
Waveform Compression
LTspice optionally uses lossy compression at runtime to keep .raw files manageable.
Configuration
.options plotwinsize=<N> ; Points per compression window (0=disable)
.options plotreltol=<val> ; Relative tolerance (default 0.0025)
.options plotvntol=<val> ; Voltage tolerance (default 10u)
.options plotabstol=<val> ; Current tolerance (default 1n)
When to Disable Compression
Turn off compression (plotwinsize=0) when:
- Using
.fourstatements - Doing FFT in post-analysis
- Need exact sample-by-sample data
- Precise
.measresults are required —.measruns in post processing on the saved waveform data, so its accuracy is limited by that data after compression
.options plotwinsize=0
Important Notes
- To configure settings for a specific schematic, add
.optionsdirective to schematic - Leave disabled (default) for most simulations
Steady-State Detection
Stop simulation automatically when steady state is reached.
.tran 10m steady
Configuration Options
| Option | Default | Description |
|---|---|---|
sstol |
0.001 | Fraction of peak current considered “zero” |
ststdelay |
0 | Time to wait before starting detection |
ststclocks |
10 | Clock cycles after detection before stopping |
Interactive Steady-State Specification
- Start simulation
- Simulate > Efficiency Calculation > Mark Start — tells LTspice you’re specifying limits manually
- Wait for circuit to reach steady state visually
- Execute Mark Start again — clears history, restarts efficiency calculation
- Wait 10+ clock cycles
- Simulate > Efficiency Calculation > Mark End
Tips
- Use
.icto set initial node voltages and inductor currents to reduce startup time - Each Mark Start execution clears waveform history (helps limit file size)
- Required for efficiency calculation reports
Memory and Performance
System Requirements
If you can run Windows, you can run LTspice. Significant effort is spent minimizing memory usage.
Waveform Storage
- All waveform data stored on disk during simulation
- Only plotted traces loaded into RAM
- No particular file size limit — can handle multi-gigabyte
.rawfiles - Can turn off marching waveforms to reduce memory during simulation
Reducing Data Size
-
Disable subcircuit internals in Settings > Save Defaults: uncheck “Save Subcircuit Node Voltages” and “Save Subcircuit Device Currents”
- Use
.saveto limit saved traces:.save V(out) V(fb) I(L1) - Limit simulation time or use
Tstartparameter:.tran 0 10m 9m ; only save last 1ms of 10ms simulation - Enable waveform compression (default is disabled)
Emergency: Running Out of Disk Space
During transient analysis, press the 0 key to discard past waveform data and reset the time axis to t=0 at the current simulation time. This frees disk space immediately.
Sweep Directive Errors
These errors are reported before the simulation starts. The run is abandoned
entirely — no .raw file is written, so the waveform viewer stays empty and
there is no partial data to inspect.
.STEP Rejected Before Simulating
Every .step must produce at least two distinct steps. A spec resolving to a
single step is rejected with one of these messages, which name the offending
directive and mark the problem with a caret:
| Error Message | Cause | Example |
|---|---|---|
This results in only one step. |
list given a single value |
.step param Rx list 1k |
This results in only one step. |
start equals end |
.step param Rx 1k 1k 1k |
Only duplicate values listed. |
All list values identical |
.step param Rx list 1k 1k |
Increment must not be zero. |
Zero increment | .step param Rx 1k 3k 0 |
Expected list numbers here. |
list with no values, or {} expressions |
.step param Rx list |
Expected "(" here. |
Missing param keyword |
.step Rx 1k 3k 1k |
Expected number here. |
oct\|dec\|lin placed after the item |
.step param Rx dec 1k 100k 10 |
Example output:
C:\path\to\circuit.net(5): This results in only one step.
.step param Rx list 1k
^^^^^^^^^^^^^^^^
Fixes:
- Give
listtwo or more distinct values — a single-value sweep is not a sweep. To run once at a non-default value, use.param(or.tempfor temperature) instead of.step. - Make
startandenddiffer, and give a non-zero increment. - Add the required
paramkeyword:.step param Rx …, not.step Rx …. - Move
oct|dec|linbefore the item:.step dec param freq ….
See SIMULATION-COMMANDS-REFERENCE.md
for the full .step grammar.
.DC Rejected Before Simulating
.dc enforces the same two-point minimum, but reports it with different wording
than .step. It also accepts a narrower set of sweep items.
| Error Message | Cause | Example |
|---|---|---|
This sweep spec results in only one point. |
Single list value, or start equal to stop |
.dc V1 list 1 |
Only duplicate values listed. |
All list values identical |
.dc V1 list 1 1 |
Increment must not be zero. |
Zero increment | .dc V1 0 2 0 |
Expected list of expressions/numbers here. |
list with no values |
.dc V1 list |
DC sweep source must be an independent source. |
Sweeping a passive component | .dc R1 1k 3k 1k |
Expected expression or literal here. |
param/model form, or oct\|dec\|lin after the source |
.dc param Rx 1k 3k 1k |
syntax error |
More than 3 nested sweeps | .dc V1 … V2 … V3 … V4 … |
Fixes:
- Sweep an independent source (
V…/I…) ortemp. To sweep a resistance or a model parameter, use.step—.dchas noparamor model-parameter form. - Give
listtwo or more distinct values, makestartandstopdiffer, and use a non-zero increment. - Place
oct|dec|linbefore the source name:.dc dec V1 1 100 10. - Keep nested sweeps to 3 or fewer.
See SIMULATION-COMMANDS-REFERENCE.md
for the full .dc grammar.
Blank Bode Plot After .FRA
Unlike the sweep errors above, a blank Bode plot usually means the run succeeded.
The results are in <circuit>.fra_<fra_instance_name>.raw; only the automatic trace
selection declined to pick anything.
LTspice auto-plots a trace in just two configurations, and every other combination of
grounded FRA terminal and probe count leaves the plot blank. Check the @ device’s
terminals and the number of & probes against the
auto-plot table, then add
what you need by hand with View > Add Trace (A) — the FRA device’s own trace, or
probe_<fraprobe_instance_name> for a probe.
The other FRA failure mode looks nothing like this. A Bode plot that appears complete
and plausible can still be wrong — when delay, stimulus amplitude, tsettle, or
tavgmin are misset, or when the FRA device does not interrupt every feedback path.
Nothing reports it. Work through
SMPS Bode Plots (FRA) in order rather than trusting
the first plot that appears.
See also: SIMULATION-COMMANDS-REFERENCE.md for .OPTIONS details, CIRCUIT-ELEMENTS-REFERENCE.md for component parameters
Documentation source: github.com/analogdevicesinc/ltspice-reference