Home > Community > Forums > Custom IC Design > ADEXL Montecarlo, only netlisting

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 ADEXL Montecarlo, only netlisting 

Last post Thu, Sep 5 2013 7:00 AM by Andrew Beckett. 6 replies.
Started by demsar 27 Oct 2011 02:17 AM. Topic has 6 replies and 1753 views
Page 1 of 1 (7 items)
Sort Posts:
  • Thu, Oct 27 2011 2:17 AM

    • demsar
    • Not Ranked
    • Joined on Mon, Oct 24 2011
    • Posts 5
    • Points 85
    ADEXL Montecarlo, only netlisting Reply

    Hi!

    For the reason of some preprocessing I need to separate the netlisting and the montacerlo simulation itself. Does anybody know, which skill/ocean procedure is used to trigger the netlisting (including the netlist variations in case of using multiple jobs).

    Best regards!

    Blaz

    • Post Points: 20
  • Thu, Oct 27 2011 10:34 AM

    Re: ADEXL Montecarlo, only netlisting Reply
    Why do you need this? The netlist is produced within each of the jobs in the background "ICRP" process - in the case of the runs being split in parts, each will differ in terms of the firstrun parameter and maybe numruns on the montecarlo analysis. You do not get a unique netlist built per monte point - that's handled within the simulator.

    Andrew
    • Post Points: 20
  • Fri, Oct 28 2011 2:18 AM

    • demsar
    • Not Ranked
    • Joined on Mon, Oct 24 2011
    • Posts 5
    • Points 85
    Re: ADEXL Montecarlo, only netlisting Reply

    Hi Andrew!

    Thanks for the fast response! I need to trigger some actions (netlist modification) on the netlist (which allready has the mc statement(s)) and then trigger the simulation itself on the command line. Doing it in pre-run script can not do the thing I want to.

    So, if I understand you correctly, the initial process triggers background processes, which get the right combination of firstrun &numruns parameters? If so I was hoping there would be a procedure, which produces the netlist (with the different numruns, firstrun combinations)-is it possible to get the hands on it?

     

    Thanks

    BLaz

    • Post Points: 20
  • Tue, Sep 3 2013 9:31 AM

    • samung
    • Top 150 Contributor
    • Joined on Fri, Jun 14 2013
    • Posts 53
    • Points 625
    Re: ADEXL Montecarlo, only netlisting Reply

    Hi Andrew,

    I thought, for a 300 runs MC simu, each of the input.scs would contain a different firstrun, as follow : run1 => firstrun=1; run2 => firstrun=2... run300 => firstrun=300. In this way from a first 300 runs MC simu to a 2nd 300 runs MC simu, the results would be the same. This is my MC law.

    So I did a characterization/MC script on this basis.

    Surprisingly, when I want to make teh comparison between my characterization/MC script and the "300 runs MC" simu done graphically with ADEXL, I have not the same results (1 fail for my characterization/MC script versus 100% sucess in the graphical way).

    It happens, that, graphically, all the 300 MC simus don't have an input.scs which follow the above law. 

     

    grep firstrun MonteCarlo.2/*/Test:trial_mc_simu:1/netlist/input.scs

     

     

    MonteCarlo.2/100/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                            

    MonteCarlo.2/101/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                            

    MonteCarlo.2/102/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                            

    MonteCarlo.2/103/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                            

    MonteCarlo.2/104/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                            

    MonteCarlo.2/105/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                            

    MonteCarlo.2/106/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=106 {                                                                                                                           

    MonteCarlo.2/107/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=106 {                                                                                                                           

    MonteCarlo.2/108/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=106 {                                                                                                                           

    MonteCarlo.2/109/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=106 {                                                                                                                           

    MonteCarlo.2/110/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=106 {                                                                                                                           

    MonteCarlo.2/111/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=106 {                                                                                                                           

    MonteCarlo.2/112/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=106 {                                                                                                                           

    MonteCarlo.2/113/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=106 {                                                                                                                 

    MonteCarlo.2/114/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=106 { 

    ...

    MonteCarlo.2/91/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                             

    MonteCarlo.2/92/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                             

    MonteCarlo.2/93/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                             

    MonteCarlo.2/94/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                             

    MonteCarlo.2/95/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                             

    MonteCarlo.2/96/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                             

    MonteCarlo.2/97/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                             

    MonteCarlo.2/98/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 {                                                                                                                             

    MonteCarlo.2/99/Test:trial_mc_simu:1/netlist/input.scs:    M2 ] savefamilyplots=yes savedatainseparatedir=yes firstrun=91 { 

     

    And the input.scs with firstrun=53 is the one which fails (in my characterization/MC script).

    One more comment, all the input.scs have : numruns=15 seed=12345 variations=mismatch (I do only mismatch MC runs). 

     

    Can you please tell me if I understand well the MC mechanism ?

     

    Thanks a lot !!

     

    Pierre 

    • Post Points: 20
  • Tue, Sep 3 2013 1:34 PM

    Re: ADEXL Montecarlo, only netlisting Reply

    Hi Pierre,

    If you ask to run 300 monte carlo runs in ADE XL, it depends on the number of jobs (in the Options->Job Setup form) as to how the simulations will be partitioned. If for example you had a single test, and a single corner, and asked to do 300 MC points, and 15 jobs, each would have numruns=20 - so each invocation of spectre would start from a particular run number and do 20 runs sequentially - but these 15 blocks of 20 runs could potentially run in parallel (depending on the capabilities of your job distribution system if you're using that).

    In general the results should be the same if you run 300 individual runs or 15 runs with 20 in each. However, occasionally you might find that a point has a convergence difficulty, and that might be aided by the fact that starting from the previous solution might make it a little easier to converge. So that might explain why the runs from the UI converged, whereas some of the individual 300 runs did not succeed?

    BTW, the forum guidelines (at the top of the posts in each forum) ask you not to append to old threads... it makes it hard to follow. Done now, and I didn't feel like splitting it up in this case...

    Regards,

    Andrew.

    • Post Points: 20
  • Thu, Sep 5 2013 3:52 AM

    • samung
    • Top 150 Contributor
    • Joined on Fri, Jun 14 2013
    • Posts 53
    • Points 625
    Re: ADEXL Montecarlo, only netlisting Reply
    Thanks a lot Andrew for the quick answer. Sorry for the non respect of the guidelines, I will pay attention to them next time.

    I agree, depending on the MC simu parameters setting : max jobs, nb runs, you can have some very slight difference, regarding the results.

    This can be a problem, because if the target is no FAIL on 1000 runs, the very slight difference can make the designer thinks his design is not robust enough. So, the designer has to get a margin of 1 FAIL depending on his MC simu parameters setting !!

    Example :

    max jobs = 20, nb runs = 100 => 100% PASS (here the firstrun increase every numruns=100/20=5 files). So firstrun=53, which is in fail is not present here.

    max jobs = 60, nb runs = 60 => 1 FAIL  (here the firstrun increase by one to one : /MonteCarlo.0/11/Test:sim_wr:1/ => firstrun=11 and /MonteCarlo.0/12/Test:sim_wr:1/ => firstrun=12). Firstrun=53 is present here.

    There is one thing I don't understand : with the same input files : spectre  input.scs  +escchars +log ../psf/spectre.out  -format psfxl -raw ../psf   +lqtimeout 900 -maxw 5 -maxn 5

    Two points : /MonteCarlo.0/11/Test:sim_wr:1/   and /MonteCarlo.0/12/Test:sim_wr:1/  can have some different result waveforms.

    >diff /home/.../adexl/results/data/MonteCarlo.0/11/Test:sim_wr:1/netlist/input.scs

     /home/.../adexl/results/data/MonteCarlo.0/12/Test:sim_wr:1/netlist/input.scs  

    => same files

    Thanks a lot, if you can give me some details, otherwise, I will get a 1 FAIL margin.


    Best Regards.
    Pierre

     
    • Post Points: 20
  • Thu, Sep 5 2013 7:00 AM

    Re: ADEXL Montecarlo, only netlisting Reply

    Hi Pierre,

    The reason why " /MonteCarlo.0/11/Test:sim_wr:1/   and /MonteCarlo.0/12/Test:sim_wr:1/" have different waveforms, is because spectre generated both of them from a single run of spectre. The netlist is shown per monte carlo point, but it ran several of them together (because numruns was greater than 1). So if max jobs=20, nb runs=100, spectre will do a simulation with firstrun=1 numruns=5, then firstrun=6, numruns=5 etc. If you look at the netlists for runs 1 through 5, they all have the same netlist - but the results were generated by the same invocation of spectre - it ran with the sweep inside the simulator - it wrote out the results for point 1,2,3,4,5 from the single netlist it was given.

    If it is failing (to converge) then that is not necessarily a circuit issue, but more a simulation issue (it might be due to the models, or a need to give a better starting point for the simulator). Anyway, if it converges in the first run (in sets of 5, rather than individual runs), I would be fairly confident in the results.

    If however you get significantly different results, and it's a spec failure you're getting, it's possible that your circuit has more than one stable operating point - circuit simulators will DC converge to one solution - but which one you'll get if there is more than one depends on the starting conditions.

    Kind Regards,

    Andrew.

    • Post Points: 5
Page 1 of 1 (7 items)
Sort Posts:
Started by demsar at 27 Oct 2011 02:17 AM. Topic has 6 replies.