• 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. ADEXL Montecarlo, only netlisting

Stats

  • Locked Locked
  • Replies 6
  • Subscribers 126
  • Views 15908
  • 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

ADEXL Montecarlo, only netlisting

demsar
demsar over 13 years ago

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

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago
    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
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • demsar
    demsar over 13 years ago

    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

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • samung
    samung over 12 years ago

    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 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    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.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • samung
    samung over 12 years ago
    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

     
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    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.

    • 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