• 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. Monte Carlo simulation of noise contributions using Spe...

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 125
  • Views 13862
  • 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

Monte Carlo simulation of noise contributions using SpectreMDL

svcher
svcher over 6 years ago

Hello,

I'd like to obtain values of noise contributions in the circuit for each Monte Carlo run.

I was able to make Spectre output total noise for each Monte Carlo iteration into a file, but no luck with noise contributions.

Below is a made-up example: two resistors in series and I am simulating voltage noise at the point where the resistors meet.  Obviously, both resistors contribute to noise.  The example shows how to dump the total noise at each Monte Carlo iteration into a file called "scalars".  Is there a way to make Spectre output noise contributions from r1 and r2 into the same file?

Thanks!

test.scs:
====================================================
r1 (1 0) res_model l=10e-6 w=2e-6
r2 (2 1) res_model l=15e-6 w=2e-6
vr (2 0) vsource dc=1.0 mag=1
model res_model resistor rsh=100 kf=1e-20*exp(dkf)
parameters dkf=0
statistics {
  process {
    vary dkf dist=gauss std=0.5
  }
}
noi (1 0) noise freq=1
====================================================

test.mdl:
====================================================
alias measurement noi_test {
  run noi;
  export real noi_total=noi_test:out;
}
run montecarlo(numruns=10,variations='all,scalarfile="scalars") {
  run noi_test;
}
====================================================

Launch command:  spectre =mdl test.mdl test.scs

Spectre version: 17.1.0.238.isr4

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    Here's how:

    alias measurement noi_test {
      run noi;
      export real noi_total=noi_test:out;
      export real r1_total=r1:total;
      export real r1_flicker=r1:fn;
      export real r1_thermal=r1:rn;
      export real r2_total=r2:total;
      export real r2_flicker=r2:fn;
      export real r2_thermal=r2:rn;
    }
    run montecarlo(numruns=10,variations='all,scalarfile="scalars") {
      run noi_test;
    }

    The easiest way to check the contribution names for each device is to run just "spectre test.scs" and then look in the results browser in ViVA. Obviously in this case the thermal noise doesn't vary within the Monte Carlo, but the flicker noise does (and so the total does too).

    Regards,

    Andrew.

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

    Thank you Andrew, this answers my question.

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

    Thank you Andrew, this answers my question.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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