Re: Oscillator Simulation
al davis <[email protected]> Wed, 14 Sep 2016 11:11:27 -0400
| Newsgroups | gmane.comp.gnu.gnucap.general |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 13 Sep 2016 22:03:51 +1000 Richard Gipps <[email protected]> wrote: > Gnucap 2009.12.07 RCS 26.136 > zero time step > newtime=1.000000e-12 rejectedtime=1.000000e-12 oldtime=0.000000e+00 > non-recoverable user requested > newtime=1.000000e-12 rejectedtime=2.000000e-12 oldtime=1.000000e-12 > using=2.000000e-12 > tried everything, still doesn't work, giving up > > .TRAN 1p {stop_time} {start_print} 1p > > .PRINT TRAN V(1) My first impression was that you are using a 8 year old version that had a bug in time step control that would occasionally show a convergence failure in mid-transient, when there was really nothing wrong. But that's not the issue here. The bug is that it gave you a useless error message. The problem is that you specified a time strobe of 1 ps, and an option set "dtmin" to 1 ps. On startup, it tries an internal time step even smaller than that, which is too small per the option. Time steps less than dtmin are considered to be zero, hence the message "zero time step". The solution to the problem is either to specify a smaller dtmin, or bigger time strobe. Given the choice, the better solution is to specify a bigger time strobe. I have never seen a case where an analysis really needed a 1 picosecond (1e-12) time step, but then there are circuits in the terahertz range that I haven't seen. For a circuit operating at 100 MHz (f=1e8, period=1e-8) this is 10000 x oversampled. When you oversample this much, it actually becomes less accurate due to rounding. What Felix said in another post is good advise.