If LT "sticks" adding 1R ESR to the large decoupling caps works 75% of the time for me.
Most of my simulations are well under 2 seconds to compute, if there's a cap taking 300mS to 1 sec to charge to a voltage, I insert a fake voltage so there's no charging to be done!
Assign initial conditions! (And make sure the configuration is set to use them.)
Increasing ESR arbitrarily is bad for a model. Are you accidentally reducing ringing, or stabilizing an LDO or SMPS in the process? How will you know? Don't forget to include realistic trace and component inductances, too!
I do all the usual stuff to like terminate floating nodes and turn off Gmstepping, etc.
Are there any other tricks that you use that perhaps I haven't found yet in my experience with this love-hate tool
Well...
I never found default settings to be at all useful. LTSpice is a bit better than most (and doesn't present most SPICE settings in the dialog!), and its improved solver helps, but I still find GEAR 2 to be the best integration method, particularly for switching circuits.
Crawling at fs/s, stuck on one point: normally, ITL4 (maximum transient timepoint iterations) is set to some value, and when that value is exceeded, it just crashes out -- Timestep Too Small. One of the most maddeningly useless errors of all time... LTSpice's default seems to be infinite iterations, so you have to watch it, otherwise it sits there chewing CPU and doing absolutely nothing.
Fixing timestep errors:
- Anything that requires precision numerical calculations. This can be hard to figure out, but complex, nonlinear functions (any model you see lots of POLY and LIMIT and TABLE and V= or I={} functions in..) tend to cause problems, whereas SPICE primitives (passives, diodes, etc.) tend to behave themselves.
- Singular nodes (floating voltages between series capacitors, undefined current loops between parallel inductors, paralleled voltage sources or series'd current sources) usually result in their own error, but RSHUNT and GMIN mask this, and the result can be small timesteps.
- Very small RELTOL (default 0.001) and TRTOL (default 10) tend to slow things down, and increasing these can alleviate errors. However, they also affect the quality of the number crunching. RELTOL over 0.01 isn't recommended, and that's already pretty sloppy. (If you're doing power and energy calculations in a switching circuit, you may want RELTOL 10e-4, perhaps even less for a very high efficiency circuit.) TRTOL is about how suddenly the timestep slows down under sudden changes (like switching edges); a grossly high value (like 50+) can turn waves into mush.
- Pull some decimal points out of ABSTOL and/or CHGTOL.
Normally, ABSTOL is fine, and CHGTOL is about RELTOL times ABSTOL (i.e., default 1e-14 and 1e-17, though CHGTOL defaults to 1e-16 for some reason). Honestly, higher ABSTOL and CHGTOL (and CHGTOL > ABSTOL) doesn't seem to cause much problems; change them by a few 10x and see if the waveforms, averages and differences, etc. degrade much, and if that fixes the hangups.
- Integration. I always have better results with GEAR 2 (i.e., integration method = gear, .OPTION MAXORD=2), which produces smoother waveforms*, and runs faster anyway!
*Though Mike's done quite a good job of minimizing the point-to-point (numerical, not real) ringing that trapezoidal integration typically produces.
In LTSpice, any of these options not present on the config dialog (and still supported) are available by adding the SPICE directive .OPTION <name>=<value>. Or if you just want to save them with the .ASC, that's good too.
Tim