The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
Aug 25th, 2024, 11:12am
Pages: 1
Send Topic Print
problems with convergence in PSS (Read 7008 times)
ethan
Community Member
***
Offline



Posts: 36

problems with convergence in PSS
Sep 14th, 2005, 10:08am
 
Hello everybody,

Recently, I got problems with convergence in PSS simulation lots of times. Then I read the manual of "Spectre Circuit Simulator Reference" Product Verion 5.0 on June 2003, pp718-731. I feel confused with certain point.

By the way, I am simulating a fold-cascode opamp with SC-CMFB with layout extraction, plus a common biasing circuit with layout extraction.

On this manual page 725 bottom, it says "One can set "steadyratio" to a smaller value to activate a tighter tolerance for the interative linear solver". But when I looked at page 726 bottom, which list the effect of "errpreset" on some parameters for driven circuits (which I posted here):

errpreset      reltol       relref            method      lteratio steadyratio noisefloor
liberal 1e-3 sigglobal traponly 3.5 0.001 -70dB
moderate 1e-3 alllocal gear2only 3.5 0.001 -120dB
conservative 1e-4 alllocal gear2only * 0.01 -200dB

where the "*" explains as  : lteratio=10.0 for conservative errpreset. Only if user specified reltol <= 1e-4 * 10.0/3.5,
it will change to lteratio=3.5.

My questions are:
1. I assume steadyratio=0.001 is a smaller value in errpreset=liberal or moderate than steadyratio=0.01 in conservative. But I thought errpreset= conservative is more tightened option, which is more accurate. It looks there is confliction between "tightening" and "loosening" in "steadyratio". Maybe I am just wrong. Please advise.

So, if I want to loosen "steadyratio", which is one of 6 suggestions in my spectre.out when my PSS simulation was failed with convergence. Which way I should set it if I pick "errpreset=conservative"? to go with 0.001 (or even smaller) or go beyond 0.01 (or even 0.1)?

2. Same point with "lteratio". I notice that "lteratio=10" for "conservative" case, and "lteratio=3.5" for liberal and moderate cases.

So, if I want to "tighten the normal simulation tolerances (maxstep, reltol, lteratio, and errpreset), which way for the value of "lteratio" should I go to resolve my convergence problem?
by the way, I already picked "errpreset=conservative" and it displayed in spectre.out that "lteratio=10", "reltol=100e-06".

3. Does the "finitediff" option give some difference in convergence with its three options (no, yes, refine)?

4. Occasionally, I met a bizarre phenomenon with simulation in certain cases.
Within one identical simulation setup, I got one simulation results which looked okay. then I re-run it (I didn't change anything on testbench and layout), the results just looked weird. If I clicked to run it again, it even displayed that some junction currents of the certain transistors exceeded "imelt" ...

So, what reason could be for this?

Appreciate your help.

ethan
Back to top
 
 
View Profile   IP Logged
Ken Kundert
Global Moderator
*****
Offline



Posts: 2386
Silicon Valley
Re: problems with convergence in PSS
Reply #1 - Sep 14th, 2005, 9:02pm
 
1. You loosen steadyratio by making it larger. (Actual tolerances used in steady-state calculations derive from the product of reltol and steadyratio, so in going to conservative, you are both tightening reltol and loosening steadyratio by an equal factor, meaning that the actual tolerance does not change)

2. You loosen lteration by making it larger. (Actual tolerances used in local truncation error (LTE) calculations derive from the product of reltol and lteratio, so in going to conservative, you tighten reltol by 10 and loosen lteratio by 3.5, meaning that the actual tolerance tightens by about a factor of 3)

3. I don't know.

4. I don't know.

-Ken
Back to top
 
 
View Profile WWW   IP Logged
byang
Community Member
***
Offline



Posts: 46

Re: problems with convergence in PSS
Reply #2 - Sep 14th, 2005, 9:44pm
 
3. There is one thing you can try to see if finitediff can help convergence.

You want to set steadyratio to a relative big number. That is loosening like Ken said. Try steadyratio=1. At the same time, you need to set finitediff=yes. Hopefully it converges.

Finite difference is run after shooting-Newton. Steadyratio controls shooting-Newton but not finite difference. By setting steadyratio=1 you give shooting-Newton a better chance to converge. However, the result may be inaccurate. Finite difference will make the result more accurate.

Baolin
Back to top
 
 
View Profile   IP Logged
ethan
Community Member
***
Offline



Posts: 36

Re: problems with convergence in PSS
Reply #3 - Sep 29th, 2005, 8:27pm
 
Thank you two for your reply.

During the  past two weeks, the most of simulations were converged without manipulating those options.  I just loosened them by selecting SPECTRE default options.

I found that if I manipulated those above options one by one, the convergence was achieved but the simulation result was bizarre (totally none sense).

And also in some cases (without manipulating those options), whenever I got "high-order finite difference  method PSS simulation failed to converge" and then I went to  select "highorder=no", the simulation converged, but the result was also none sense.

Any hint on these?
Back to top
 
 
View Profile   IP Logged
byang
Community Member
***
Offline



Posts: 46

Re: problems with convergence in PSS
Reply #4 - Sep 29th, 2005, 10:05pm
 
Dear Ethan,

One reason is that when highorder=yes or finitediff=yes, the finite difference method is used which is almost like requiring steadyratio=0 in the shooting-Newton method. SpectreRF had a harder time converging because the convergence requirement became strict.

On the other hand, SpectreRF can converge with loose requirements. However, it seems like the accuracy took a hit.

Right now probably only the SpectreRF R&D can solve this problem.

Baolin

Back to top
 
 
View Profile   IP Logged
Paul Geraedts
Community Member
***
Offline

GIGO

Posts: 60
Enschede, Netherlands
Re: problems with convergence in PSS
Reply #5 - Sep 22nd, 2006, 1:16pm
 
Hi Ethan,

Sorry, but I didn't read your post before. I seem to be a year late, but I'll reply anyway :). Who knows, somebody else is currently having the same problem..

Personally, I have good experience with cascading (two or more) PSS analyses in case of problems with convergence. I demand a higher accuracy of every next PSS analysis. Afterwards, I sometimes even use MIC or FDTD as refinement method (respectively 'highorder' and 'finitediff').

Passing the results from one analysis to the next can easily be done by putting the same filename in 'readic' and 'writefinal' and setting 'skipdc' to yes (in the first analysis of the cascade, you obviously only have to fill in writefinal). About how to set the accuracy of the cascaded analyses properly, I like appendix A of the SpectreRF User Guide (p. 1066 of v5 and p. 1200 of v6, to be precise). Just look at it as a starting point, I'd say.

My method seems similar to the one Baolin advises (I frequently set steadyratio to 1 in the first PSS). I think Baolin's method is more elegant and mine is more brute-force. I like the idea of a method that always works (just put more stages in the cascade (/ take smaller accuracy refinement steps) in case of bigger convergence problems..) A sort of one-stop non-convergence buster ;).

4. The missing answer to your last question could well be found by looking at one of my recent post:
   http://www.designers-guide.org/Forum/YaBB.pl?num=1158926425
   Although, if your simulation results are so sensitive, I wouldn't trust them anyway: I would first tighten the
   accuracy considerably.

Good luck with it,

Paul

Back to top
 
 
View Profile   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.