The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> Circuit Simulators >> How to extract Monte Carlo iteration on Spectre
https://designers-guide.org/forum/YaBB.pl?num=1171514365

Message started by lief on Feb 14th, 2007, 8:39pm

Title: How to extract Monte Carlo iteration on Spectre
Post by lief on Feb 14th, 2007, 8:39pm

I am using Spectre to run Monte Carlo on gate cells (built from bsim4 nfets and pfets) to simulate mismatch conditions.  I would like to extract the gate model for the worst case iteration (in this case, delay).  I should then be able to use that specific gate for non-Monte-Carlo simulation.

What is the best approach to extracting the information?  Right now I am using the 'info' command to grab the 'instance' and 'model' parameters - from which I create new nfet and pfet models for each of the transistors in the cell.  However, using this method, I still have not been able to match the delay numbers that I measured during the Monte Carlo run.  Do I need to set up any other parameters?

Also, is there another easy way to measure and print delays in Spectre (transient analysis) besides the 'oceanEval()' command inside of the Monte-Carlo body or the use of the MDL file?

Title: Re: How to extract Monte Carlo iteration on Spectr
Post by Scott Flinchbaugh on Feb 21st, 2007, 12:48pm

Lief,

The easiest way to do this is to utilize the spectreMDL montecarlo flow.

Specifically, run your normal montecarlo iterations using spectreMDL.  SpectreMDL will then generate
an output file that contains the scalar data for each measurement performed along with some statistical
figures of merit for the montecarlo loop that was run.  It should be noted that you may have to use the
"seed" parameter to ensure that you can duplicate your montecarlo run later.

In this file you will notice the first column is named "iteration".  This iteration number represents
the montecarlo iteration that produced the row of measurement results.  From this data you can
identify which run provides your worst case performance.

Now, in either spectre or spectreMDL construct a montecarlo run using the same "seed" value if necessary, with the
"firstrun" parameter set to the worst case iteration number, and the "numruns" parameter set to "1".  
Inside this montecarlo loop add the analyses you want to run (and any measurements if you are using
spectreMDL).  This will cause the process and mismatch variation to duplicate the worst case process/mismatch
variation that you determined from your initial run.  It also will save you quite a bit of time.

Hope this helps,
-scott F.

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.