Paul Geraedts
Community Member
![* *](https://designers-guide.org/forum/Templates/Forum/default/stargold.gif) ![* *](https://designers-guide.org/forum/Templates/Forum/default/stargold.gif)
Offline
![](https://designers-guide.org/forum/avatars/smiley.gif)
GIGO
Posts: 60
Enschede, Netherlands
|
Hi all,
Let me start by summarizing what I know from the manual about this calculation before asking my question.
A B C D <--------> <--------> <--------> <--------> |----------|----------|----------|----------|----------| 0 tstart tonset tinit tstop
<------------------------------> <--------> initial transient PSS
In which A is the time until all the independent sources excite the circuit in a periodic fashion. B is equal to the value of 'tstab', as set by the user, and C depends on the nature of the PSS: autonomous or forced. In forced PSS, it is equal to the value of 'period' (the period of steady-state). In autonomous PSS, it is equal to 4 times the value of 'period' (the initial guess of the period of steady-state). D is of course equal to (the current estimate of) the period of steady-state.
This clear definition of the simulation time of the initial transient allows me to calculate 'tstab' such, that the PSS starts at a point in time where most of the initial transients have dissipated and where the state of the circuit is only slowly varying. By doing so, PSS needs less iterations to converge which speeds up the overall simulation drastically.
Now my question. Why is Spectre not behaving as such? I mean, the actual calculation of the simulation time of the initial transient strikes me far more random. In case of convergence problems, as a work-around, I set 'saveinit' to yes, look at the signals during the initial transient and change 'tstab' accordingly. This costs more time though.
But it is not only occurring at an initial PSS. Even more striking is attached example (see file).
It was the result of the last analysis of a cascade of three PSS analyses on a rather stiff relaxation oscillator (I reused the final state of the circuit at every subsequent analysis). I choose the cascade to overcome initial convergence problems (the accuracy parameters were first set rather loose and were increasingly set tighter). After the third analysis the accuracy of the obtained PSS was sufficient for the subsequent MIC refinement to converge.
The notice about the detected onset of periodicity (A in the above summary) is just wrong (after t=2*period, all the sources excite my circuit in a periodic fashion)! I set 'tstab' (B in the above summary) to 0, so C is 2 times the estimated period of steady-state (which is less than 4 by the way :). Why? Most of the initial transients have been dissipated by now. As Spectre doesn't calculate a new estimate of the period of steady-state (as result the first 2 reported convergence norms are equal: 150), the initial transient seems to do nothing useful! Furthermore, I'm only partly able to control the accuracy parameters of the initial transient part (i.e. 'relref'). So in such situations, the initial transient is a bit of a pain (don't forget: it takes up about half of the total simulation time)!
To summarize. In general, I would like to be able calculate the appropriate value for 'tstab' in advance. More specific, when I set an initial condition file and leave 'tstab' at default (=0), I think both A and C should be zero (as long as the initial condition file describes a state later than (tonset+C) (see the above summary), that is). So, no *initial* transient before the PSS in such a situation (would be a contradiction in itself :).
Sorry for the long post, but I think it can save people a lot of simulation time when the whole thing is implemented properly.
Kind regards,
Paul
P.S. I'm using IC5141USR2 together with MMSIM60USR1.
|