• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. RF Design
  3. Convergence problem in LPTV circuit (Switched capacitor...

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 63
  • Views 14588
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Convergence problem in LPTV circuit (Switched capacitor circuit)

Binhngo1210
Binhngo1210 over 4 years ago

Hi, hope all you guys be fine during this covid time! 
I am dealing with PSS/PSP simulation on the LPTV circuit, the circuit works out at 1 GHz for my first running. However, when changing it slightly to 1.1GHz ( to test some properties), the convergence issue (that was quite troublesome to me often in other circuits) appears. 
I try looking for some suggested solutions on this page, but it still gets me stuck, such as: 
 + change "reltol" to 1e-5 /vabstol = 1e-8/iabstol=1e-15

 + switch between "gear2only" and "traponly"

 + also adjust time step to be smaller (10p) 

 + switch between HB and Shooting method 

in simulation, I let the number of harmonics equal to 20, and let the simulator itself decides the "tstab" time 
my tool version is IC 616.500.14 and MMSIM 14.1 
the output log file/input.scs are also included here 
very appreciate you for debugging it! 
thanks. 

lptv_bug.rar

  • Cancel
  • Tawna
    Tawna over 4 years ago

    Hi Binhngo1210,

    This is a super quick response...  I don't have time to debug.

    1. Please use a more recent version of software (both virtuoso and Spectre). What you're using is ancient.   I suggest IC6.1.8 ISR9 (IC618 ISR12 is current) or later and MMSIM 19.1 or 20.1 (20.1 ISR4 is the latest).   

    2. Don't mess with the spectre options (unless you really understand them).  You shouldn't need to modify them most of the time.   (I know...we are engineers...we love to play with options.   <grin>)   You are pretty much guaranteeing non-convergence with an iabstol of 1e-15.    I rarely (like never over the past 10 years) change iabstol from the default value of 1e-12. 

    Use the default options.  Start with errpreset=moderate.  If you need more accuracy, try errpreset=conservative.   

    If you see trapezoidal ringing, you may want to change the method from trapony to trap.  Or from trap to gear2only (dampens).   Otherwise, leave this alone.

    If you are simulating an oscillator, you often need to use traponly or trap (gear2only can damp the oscillation and the oscillator won't start).

    Setting maxstep to 10p (or a very small number) is a brute force method to enforce accuracy and is rarely needed for most circuits.   You are slowing down spectre needlessly by doing this.

    3.  I don't know if you're at a university?  If so, ask the professor to download these articles from https://support.cadence.com .

    20463331 FAQ: Spectre RF Convergence Tips for Shooting PSS Analysis
    20409487 FAQ: Convergence tips for driven and autonomous circuits in Harmonic Balance

    4.  Shooting newton pss is best for strongly nonlinear circuits (think very fast rise times).  Harmonic balance is idea for circuits with sinusoidal-ish waveforms.  (This is a gross simplification, but you'll get the idea)

    11310266 FAQ: Basic Guidelines for When to Use Shooting Newton vs. Harmonic Balance Analyses

    5.  Accuracy in hb is largely determined by the number of harmonics.  (Too few harmonics = poor accuracy.  Too many = lots of memory).   Accuracy in shooting newton pss is largely determined by errpreset. (use moderate or conservative for SpectreRF). The SpectreRF User Guide will give detailed information. 

    6. In the hierarchy, we have example workshops.   I believe that the RF_Doc_Database library ExampleLibRF is located in the  <MMSIM14.1.1>/tools/spectre/examples/SpectreRF_workshop directory.  (We have an updated version for Spectre 19.1 and 20.1)

    Simply uncompress and untar  RF_Doc_Database.tar.gz  .   Note:  Be sure to read the introductory set up chapter - I think it might be in Appendix A of the SpectreRF User Guide....your version of software is so old that I don't recall where we kept it.   If using Spectre 19.1 or 20.1, see this Article and look at the RF_Doc_Database examples:

    20463330 SpectreRF AppNotes and Tutorials - One of our best kept secrets!

    6. Another article (contains best practices) which you may find helpful:  

    20491292 Getting the Most Out of Spectre® APS RF 19.1: Maximizing Performance

    Best regards,

    Tawna

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • ShawnLogan
    ShawnLogan over 4 years ago in reply to Tawna

    Dear Binhngo1210,

    I see Tawna has already answered your post - she is fast! Her recommendations, of course, provide some very valuable tips.

    I did have a chance to review your spectre output log as well as your input.scs file and have some specific comments....see what you think!

    1. Your input. scs file contains the following pss analysis command:

    pss  pss  fund=1.1G  harms=20  errpreset=conservative  autotstab=yes +    saveinit=yes  method=traponly  tstabmethod=traponly  annotate=status

    However, in viewing your output log, I see the following for the spectre command and pss portion of your log:

    Command line:     /tools/cadence/mmsim/mmsim141_hotfix14/tools.lnx86/bin/spectre  \         input.scs +escchars +log ../psf/spectre.out +inter=mpsc  \         +mpssession=spectre1_2759_2 -format psfxl -raw ../psf  \         +errpreset=conservative +lqtimeout 900 -maxw 5 -maxn 5

    ================================= `pss': time = (0 s -> 32.0091 ns) =================================  Output and IC/nodeset summary:                  save   18      (current)                  save   222     (voltage)  Important parameter values in tstab integration:     start = 0 s     outputstart = 0 s     stop = 32.0091 ns     period = 909.091 ps     maxperiods = 20     step = 32.0091 ps     maxstep = 36.3636 ps     ic = all     useprevic = no     skipdc = no     reltol = 10e-06     abstol(V) = 10 nV     abstol(I) = 1 fA     temp = 27 C     tnom = 27 C     tempeffects = all     method = gear2only     lteratio = 3.5     relref = sigglobal     cmin = 0 F     gmin = 1 pS

    Hence, your integration method choice is being overwritten to "gear2only". I don't view this as a major issue since this is a driven circuit.

    2. What I do note is that you have set the tstab interval to "auto" and following the pss tran portion of your simulation, the output log notes:

    "Warning from spectre at time = 32.0091 ns during periodic steady state analysis `pss'.
        WARNING (SPCRTRF-15311): Steady-state has not been detected after 32.0091 ns.
            If the circuit does not converge, set a longer transient stop time manually.
            The number of tone-1 harmonics is set to 20."

    Further the measure of steady-state convergence after the transient portion of the pss simulation, is very large ("Conv norm = 1.25e+06")  and does not appear to be converging as the number of iterations increases (final value is Conv norm = 1.25e+06). Hence, I am thinking you might want to increase your value of tstab beyond the automatically assigned value. Please inspect the tstab portion of your simulation results and examine the waveforms near the end of the 32 ns tstab simulation. Do the DC and transient performance of your output signals appear close to what you expect for their steady-state values? If not, you might try to disable the "auto" tstab and assign a value that you think will provide an end result that is closer to a steady-state solution.

    3. I don't know if you are concerned with simulation time, but if you are, you might also consider saving the state of the tstab portion of your simulation. In this manner, if you need to further extend the stab portion of the simulation, you can use the saved state and avoid re-simulating the tstab portion from time = 0. The periodic save state feature is found in the transient simulation GUI Options "State file" tab.

    I hope this is useful Binhngo1210....

    Shawn

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to Tawna

    In addition to Tawna's splendid suggestions, I took a very quick look at your netlist (you didn't help yourself by using the rather non-standard proprietary "rar" format for the file; luckily I had a means of opening that because of an extra tool I happened to have access to on my machine).

    It appears that there are dividers in the circuit, and (without spending a long time figuring out the topology and circuit), I threw together some models (I didn't have access to the PDK you're using), and I can see that the signals LOA<1>, LOA<2> etc seem to be periodic at about 488.88MHz, which appears to be 4/9ths of the fundamental frequency you've given (1.1GHz). So that's why it stands no hope of converging (in fact you can see that from the very high conv norm in the log file - it says resolutely at 1.25e06, and doesn't reduce or even move around - that's a pretty good indication of frequencies in the circuit that aren't commensurate (co-periodic) with the fundamental.

    I did just try running with the PSS fund=1.1G/9 - it's quite slow (mainly because of your excessively tight accuracy settings, which are not going to help with convergence particularly) - albeit with my made-up models. However, it did actually converge if I did that.

    I then ran with more sensible settings:

    simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=27 \
    tnom=27 scalem=1.0 scale=1.0 gmin=1e-12 gmin_check=all rforce=1 \
    maxnotes=5 maxwarns=5 digits=5 cols=80 dc_pivot_check=yes pivrel=1e-3 \
    sensfile="../psf/sens.output" checklimitdest=psf
    pss pss fund=1.1G/9 harms=20 errpreset=moderate autotstab=yes
    + saveinit=yes annotate=status

    This converged much more quickly, and in fairly few iterations.

    So it appears to me that. you have subharmonics in your circuit because of the divider. All frequencies in the circuit must be an integer multiple of the PSS fundamental, and otherwise it will fail to converge.

    Now do bear in mind that I'm not running this with a 5.5 year old simulator version, nor am I running with the right models, but it seems fairly likely that this is the root cause of your convergence problem.

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • Binhngo1210
    Binhngo1210 over 4 years ago in reply to Tawna

    Sorry for my late reply, I am in another time zone! 
    Many thanks to @ShawnLogan, your quick debug and comments gave me a good start to play with options, especially how to treat tstab portion fast and effectively.
    Tawna your comments r awesome to me and fairly intuitive (maybe that is how engineers approach any explanation). Also,  the guidelines are quite systematic and comprehensive. Fortunately, I have full access to such articles and it will be surely an answer for my next similarity. Sorry for requiring a debug, honestly I took a few days to tackle with n had no way really effective. 
    @Andrew I owe y a coffee, your debug is professional enough and finally dedicated to my issue. In this circuit, I have employed dividers to manipulate the input clock signal. as I described in the question when slightly shifting the input clock up, my divider did not work really well, then subharmonics arise unpredictably as a result even though the first clock setting 1GHz was smooth to convergence only in a few minutes. 
         From your suggestion with multiple integer fundamental tone, I gave effort with the smaller integer ratio of fundamental with the default option of in simulation tab and PSS. However, it also took me a long time to see convergence. Probably, giving more trials with that ratio will get it done finally. 
    My last solution based on your idea is thinking about a trade-off. Because of my bad divider as speeding the input clock, so I decided to come up with a method rather relevant to the circuit modification: increase VDD power supply a little (1.2 --> 1.22, because this is study stuff so power can be a dealing thing) --> then with default options, it worked well at the cost of power after a couple of iterations. 
    Thanks for all of your support and have a nice weekend. 
    P/S: my post (if have next time) will be sure with the latest version of IC and MMSIM, thanks for the reminder.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information