• 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. Custom IC Design
  3. Temperature sweep of a chopped bandgap in MonteCarlo

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 125
  • Views 16165
  • 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

Temperature sweep of a chopped bandgap in MonteCarlo

unSkilled
unSkilled over 6 years ago

Hi all,

The circuit I'm simulating is a chopped bandgap reference with curvature compensation.

I'm interested in testing the effectiveness of the curvature compensation scheme over a MonteCarlo sweep, but I'm not sure how to do this.

My current idea is that since the the circuit is chopped, For every sample I need to run a transient/pss to get the final value of the reference. Also, I would have to run such a simulation for every temperature of interest in order to build the vector containing the reference value swept vs. temperature. This seems to me a very inefficient way to solve this problem.

Perhaps you know a more efficient way to solve this problem? This has to be done in ADE-L / skill as we don't have ADE-XL licenses available.

Thanks and best regards,

  • Cancel
  • unSkilled
    unSkilled over 6 years ago

    Hi again,

    I believe that of the usage of the additionalParams approach suggested here is the right way to go. Including the parameter file so that temperature is changed dynamically over time allows me to observe whether the curvature compensation is effective for each of the Monte Carlo samples (after trimming, of course). I hope this can help someone else in the future.


    Regards,

    Lewis

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to unSkilled

    Hi Lewis,

    Actually the tran analysis in current versions (this changed in an IC617 hot fix version some time back) allows the dynamic parameter set to be set up on the transient analysis form:

    If you're not varying two parameters at the same time, then you have been able to do this via with the Dynamic Parameter capability on the tran analysis form for many years, so I'm sure you don't need to use additional parameters to achieve what you're doing in that case.

    Be aware though - making too large a step in the temperature within a transient is likely to lead to convergence problems as otherwise you've introduced a sudden discontinuity. You can take advantage of the "param_step" option (see "spectre -h tran" on the UNIX command line for more details) to break down the step into smaller pieces (param_step is the time-step between each discrete change). That does still have to be entered via the additional parameters field.

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • unSkilled
    unSkilled over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    Thanks for your remarks. Let me see if I got this right. In my particular test I'm using 5 degree steps every 1ms. I do observe some overshoot in the reference signal and indeed I presumed it was due to the discontinuity introduced with the temperature change. If I were to set param_step option to 1ms, would this mean that the 5 degree change is done gradually over 1ms (let's say linearly)? How does the tool do this? Does it take the timestep to gradually increase the temperature?

    Additionally,

    Andrew Beckett said:
    That does still have to be entered via the additional parameters field.

    You mean I have to enter param_step=1m in the additionalParam field as well as paramset=myset and load my paramset.scs file or simply add param_step=1m and use the dynamic parameter form from ADE-L to change the temperature?

    Thank you for helping us all get the most out of the Virtuoso tool time and again.

    Regards,

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to unSkilled

    If you are changing the temperature in the table every 1ms and set param_step to 1ms, then it will be no different. The parameter change is always discontinuous - if you set the temperature change to be (say) 5 degrees every 1ms, and you set param_step=0.1m then it would change the temperature by 0.5 degree every 0.1ms. In essence it will do smaller discontinuous steps without you needing to specify each intermediate step in the paramset table. So if the first temperature was temp1 at time1 and the second was temp2 and time2, it would update the temperature every param_step to be param_step*(temp2-temp1)/(time2-time1).

    For your second question, if you've specified the paramset information through the ADE UI as I've shown above, or you're using just a single parameter being changed in older versions, the only "additional parameter" you need to specify is the param_step - no need for external files in that case.

    Regards,

    Andrew.

    • 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