• 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. Processing raw Spectre Monte Carlo data ?

Stats

  • Locked Locked
  • Replies 23
  • Subscribers 127
  • Views 29221
  • 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

Processing raw Spectre Monte Carlo data ?

MarkGr15
MarkGr15 over 10 years ago

I am using OceanXL (within ADEXL created scripts) to kick off Monte Carlo simulations. I would like to be able to post process the data myself, to be able to calculate the mean, sigmas etc... 

Is the raw data available for this, and how is it organized? I am having a hard time deciphering the file structure etc....

I do see the results listed in an output log, when I add " -log ocean_montecarlo_output.log" as a an option to the command line that I use to kick off my scripts.

The upshot is I want to be able to find the raw data in the output directory, and post process the measured data.

I am using IC6.1.6-64b.500.9.  

spectre -W  => sub-version  13.1.1.049

thanks

Mark

  • Cancel
  • MarkGr15
    MarkGr15 over 10 years ago

    another question about the abStats.il code in solution 11026072. What is the "rmult_27" ? I do not understand what it is, how it is set, or selected. Thanks

    Mark

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

    Mark,

    Unknown said:

    1)  Are you saying I can do For Loops, etc... within my OceanXL coding that I have set up based on the ADE-XL testbench?

    No. My assumption is that you've got some kind of monte carlo setup in a script generated from ADE XL. You might be doing monte carlo across corners (maybe temperature and voltage corners, say), and then a number of "points" (each is one iteration of the monte carlo) and multiple tests. For each history, you have a single "RDB" (results database) and the code I gave shows how you iterate through the results to read all the points.

    Unknown said:

    2) for the abStats.il code :   the file says " Modified   Jul 30, 2013 " ...., do I have the correct file?  Or did you forget to update your comments.

    That's correct. I often do forget to update the "Modified" line, but actually the date in the SCCS line is consistent with that. I last modified this code in 2013, having fixed a few things between version 1.6 (which was previously on the support site) and version 1.10 (which is now on the support site). I didn't have to do any fixes this week - I just needed to re-upload the solution. I maintain an internal library of all my SKILL code, which is version controlled, and then I selectively publish some of that as Cadence Online Support solutions. I'd done that, but had forgotten to update the solution to the latest version.

    Unknown said:

    another question about the abStats.il code in solution 11026072. What is the "rmult_27" ? I do not understand what it is, how it is set, or selected. Thanks

    The parameter (or measurement) was called rmult. In IC5141 you could specify a parameter to sweep, and the default parameter was the temperature, and so you see the default temperature shown after all the parameters.

    With ADE XL you can't sweep a parameter with monte carlo, but you can do monte carlo over corners instead. In my example above, I had XXX_monte, where "monte" was my corner name. Note I didn't try using abStats.il where I actually had more than one corner - I only quickly tried it out to make sure it still worked.

    Probably I'd go for the RDB approach as I think it's more future proof.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • MarkGr15
    MarkGr15 over 10 years ago

    Andrew,

    I am doing a script, that is what I mean by OceanXL coding in a script.  I set up my ADE-XL test bench, create a script, and then use the script, and modify it.   

    Again, are you saying I can add For Loops to this script? My understanding is that monte carlo sims are only supported within ADE-XL and Ocean-XL. I used to do them in regular ocean coding back in the day.

    thanks

    Mark

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

    Mark,

    An OCEAN XL script is just SKILL, so you can do whatever you like with it. However, the actual simulations that are run are essentially ADE XL simulations - but in terms of post-processing, you can use whatever loops you like. I added those foreach loops into my OCEAN XL script, and they ran fine - that's definitely legal.

    So it really depends on what you planned to do with those loops...

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • mawa
    mawa over 10 years ago

    HI Andrew

    Would it possible for you to publish the complete ocean scripts where the example you wrote earlier in this thread is included.

    Just to able to get the complete picture for how the corner, test, or even variables like slewRate, TRAN, monte  etc, are defined in your script! 

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

    Martin,

     I couldn't find it, but it looks as if it was probably the ADE XL Rapid Adoption Kit that's on Cadence Online Support. So I created the example again from scratch (just making sure the tests were called AC and TRAN, which I think the RAK suggests you do), dumping the OCEAN script, and then adding the additional lines in:

    ;====================== Set to XL mode =========================================
    ocnSetXLMode()
    ocnxlProjectDir( "./simulation" )
    ocnxlTargetCellView( "opamp090" "full_diff_opamp" "adexl" )
    ocnxlResultsLocation( "" )
    ocnxlSimResultsLocation( "" )
    
    ;====================== Tests setup ============================================
    
    ;---------- Test "AC" ------------- 
    ocnxlBeginTest("AC")
    simulator( 'spectre )
    design( "opamp090" "full_diff_opamp_AC" "schematic")
    path( "./models/spectre" )
    modelFile( 
        '("gpdk090.scs" "NN")
    )
    analysis('ac ?start "1"  ?stop "10G"  )
    analysis('dc ?saveOppoint t  )
    desVar(	  "gain" 10	)
    desVar(	  "vcm" 1	)
    desVar(	  "vdd" 2	)
    envOption(
    	'firstRun  t 
    	'analysisOrder  list("pz" "dcmatch" "stb" "tran" "envlp" "ac" "dc" "noise" "xf" "sp" "acmatch" "pss" "pac" "pstb" "pnoise" "pxf" "psp" "qpss" "qpac" "qpnoise" "qpxf" "qpsp" "hb" "hbac" "hbnoise" "hbsp" "sens" "lf") 
    )
    saveOption( ?infoOptions list(list("modelParameter" "models" "rawfile" "" "" "" t) list("element" "inst" "rawfile" "" "" "" t) list("outputParameter" "output" "rawfile" "" "" "" t) list("designParamVals" "parameters" "rawfile" "" "" "" t) list("primitives" "primitives" "rawfile" "" "" "" t) list("subckts" "subckts" "rawfile" "" "" "" t) list("asserts" "assert" "rawfile" "" "" "" nil) list("extremeinfo" "all" "logfile" "" "yes" "" nil) list("<Click_To_Add>" "none" "rawfile" "" "" "" nil) ) )
    save( 'i "/V0/PLUS" )
    temp( 27 ) 
    ocnxlOutputTerminal( "/V0/PLUS" ?save t)
    ocnxlOutputExpr( "dB20(value(VF(\"/outdiff\") 1))" ?name "DCGain" ?plot t)
    ocnxlOutputExpr( "abs(IDC(\"/V0/PLUS\"))" ?name "Current" ?plot t)
    ocnxlOutputExpr( "abs((VDC(\"/inp\") - VDC(\"/inn\")))" ?name "InputRandomOffset" ?plot t)
    ocnxlEndTest() ; "AC"
    
    ;---------- Test "TRAN" ------------- 
    ocnxlBeginTest("TRAN")
    simulator( 'spectre )
    design( "opamp090" "full_diff_opamp_TRAN" "schematic")
    path( "./models/spectre" )
    modelFile( 
        '("gpdk090.scs" "NN")
    )
    analysis('tran ?stop "100n"  ?annotate "no"  ?save "selected"  
    		?oppoint "no"  )
    desVar(	  "gain" 10	)
    desVar(	  "vcm" 1	)
    desVar(	  "vdd" 2	)
    envOption(
    	'analysisOrder  list("pz" "dcmatch" "stb" "tran" "envlp" "ac" "dc" "noise" "xf" "sp" "acmatch" "pss" "pac" "pstb" "pnoise" "pxf" "psp" "qpss" "qpac" "qpnoise" "qpxf" "qpsp" "hb" "hbac" "hbnoise" "hbsp" "sens" "lf") 
    )
    option(	'dochecklimit  "no" 
    )
    saveOption( ?outputParamInfo nil )
    saveOption( ?elementInfo nil )
    saveOption( ?modelParamInfo nil )
    saveOption( 'currents "selected" )
    saveOption( 'pwr "all" )
    saveOption( 'save "selected" )
    save( 'v "/outdiff" "/OUTN" "/OUTP" )
    temp( 27 ) 
    ocnxlOutputSignal( "/outdiff" ?save t)
    ocnxlOutputSignal( "/OUTN" ?save t)
    ocnxlOutputSignal( "/OUTP" ?save t)
    ocnxlOutputExpr( "slewRate(VT(\"/outdiff\") 0 t ymax(VT(\"/outdiff\")) t 10 90 nil \"time\")" ?name "SlewRate" ?plot t)
    ocnxlOutputExpr( "(settlingTime(VT(\"/outdiff\") 0 t 1e-07 t 1) - 5e-08)" ?name "SettlingTime" ?plot t)
    ocnxlEndTest() ; "TRAN"
    
    ;====================== Sweeps setup ===========================================
    ocnxlSweepVar("gain" "10")
    ocnxlSweepVar("vcm" "1")
    ocnxlSweepVar("vdd" "2")
    
    ;====================== Model Group setup ==========================================
    
    ;====================== Corners setup ==========================================
    ocnxlCorner( "monte"
       '(
          ("model" "gpdk090.scs" ?section "\"MC_models\"")
          ("modelGroup" "")
       )
    )
    
    ;====================== Test v/s corners setup =================================
    
    ;====================== Job setup ==============================================
    ocnxlJobSetup( '(
    	"blockemail" "1"
    	"configuretimeout" "300"
    	"distributionmethod" "Local"
    	"lingertimeout" "300"
    	"maxjobs" "2"
    	"name" "ADE XL Default"
    	"preemptivestart" "1"
    	"reconfigureimmediately" "1"
    	"runtimeout" "-1"
    	"showerrorwhenretrying" "1"
    	"showoutputlogerror" "0"
    	"startmaxjobsimmed" "1"
    	"starttimeout" "300"
    	"usesameprocess" "1"
    ) )
    
    ;====================== Disabled items =========================================
    
    ;====================== Run Mode Options ======================================
    ocnxlMonteCarloOptions( ?mcMethod "all" ?mcNumPoints "50" ?mcNumBins "" ?mcStopEarly "0" ?mcStopMethod "Significance Test" ?samplingMode "random" ?saveProcess "1" ?saveMismatch "0" ?useReference "0" ?donominal "0" ?saveAllPlots "0" ?monteCarloSeed "" ?mcStartingRunNumber "" ?dumpParamMode "yes" )
    
    ;====================== Starting Point Info ======================================
    
    ;====================== Run command ============================================
    ocnxlRun( ?mode 'monteCarlo ?nominalCornerEnabled nil ?allCornersEnabled t ?allSweepsEnabled t)
    ocnxlOutputSummary(?yieldSummary t ?exprSummary nil ?specSummary nil ?detailed nil)
    ocnxlOpenResults()
    
    ;------------------------------------------------------------------------
    ; Example of using RDB API to retrieve results
    ;------------------------------------------------------------------------
    rdb=axlReadHistoryResDB(ocnxlGetCurrentHistory() ?session ocnxlGetSession())
    foreach(point rdb->points()
      printf("Point %d\n" point->id)
      foreach(corner point->corners()
        printf(" Corner %L\n" corner->name)
        foreach(test corner->tests()
          printf("  Test %L\n" test->name)
          foreach(output test->outputs()
            when(output->type=='expr
              ; take your pick
              ;printf("    Output %s = %s\n" output->name output->valueAsString())
              printf("    Output %s = %L\n" output->name output->value)
            )
          )
        )
      )
    )
    
    ; If you know the output name, the test name, the corner name, and the 
    ; point id, you can also do:
    
    ;            OUTPUT     TEST  CORNER  POINT
    ;rdb->output("SlewRate" "TRAN" "monte" 5)->value
    
    ;so:
    numPoints=length(rdb->points())
    for(i 1 numPoints
      printf("%d: %L\n" i rdb->output("SlewRate" "TRAN" "monte" i)->value)
    )
    
    ;====================== End XL Mode command ===================================
    ocnxlEndXLMode()
    

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

    Here's the output it produced:

    Yield summary:
    ==============
      AC:
        Name            Yield  Min  Target     Max    Mean   sigma To Target   sigma   Errors
            Current_monte 100 7.126m         info 7.135m 7.131m                     2.079u       0
             DCGain_monte 100 26.61         info 26.62 26.61                      4.08m       0
        InputRandomOffset_monte 100 1.019u         info 188.4u 62.86u                     44.04u       0
      TRAN:
        Name            Yield  Min  Target     Max    Mean   sigma To Target   sigma   Errors
        SettlingTime_monte 100 13.66n         info 14.12n 13.93n                     105.6p       0
           SlewRate_monte 100 178.5M         info 179.3M 178.9M                     161.2k       0
    Estimated yield = 100.000000% (50/50), 0 errors
    Estimated yield (No opregions) = 100.000000% (50/50)

    Point 1
     Corner "monte"
      Test "AC"
        Output DCGain = 26.60549
        Output Current = 0.007132556
        Output InputRandomOffset = 3.648542e-05
      Test "TRAN"
        Output SlewRate = 1.79032e+08
        Output SettlingTime = 1.391994e-08
    Point 2
     Corner "monte"
      Test "AC"
        Output DCGain = 26.60808
        Output Current = 0.007131482
        Output InputRandomOffset = 8.835547e-05
      Test "TRAN"
        Output SlewRate = 1.789843e+08
        Output SettlingTime = 1.392174e-08
    Point 3
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61047
        Output Current = 0.007128555
        Output InputRandomOffset = 0.0001559502
      Test "TRAN"
        Output SlewRate = 1.787554e+08
        Output SettlingTime = 1.391869e-08
    Point 4
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61582
        Output Current = 0.007128684
        Output InputRandomOffset = 2.827958e-05
      Test "TRAN"
        Output SlewRate = 1.789275e+08
        Output SettlingTime = 1.384834e-08
    Point 5
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61439
        Output Current = 0.007129072
        Output InputRandomOffset = 6.485985e-05
      Test "TRAN"
        Output SlewRate = 1.78843e+08
        Output SettlingTime = 1.389013e-08
    Point 6
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61419
        Output Current = 0.00713372
        Output InputRandomOffset = 0.0001839897
      Test "TRAN"
        Output SlewRate = 1.788226e+08
        Output SettlingTime = 1.383603e-08
    Point 7
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61748
        Output Current = 0.007130782
        Output InputRandomOffset = 8.756757e-05
      Test "TRAN"
        Output SlewRate = 1.788338e+08
        Output SettlingTime = 1.396847e-08
    Point 8
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61527
        Output Current = 0.007129534
        Output InputRandomOffset = 3.930126e-05
      Test "TRAN"
        Output SlewRate = 1.7876e+08
        Output SettlingTime = 1.365952e-08
    Point 9
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61824
        Output Current = 0.007131489
        Output InputRandomOffset = 2.639879e-05
      Test "TRAN"
        Output SlewRate = 1.787556e+08
        Output SettlingTime = 1.382017e-08
    Point 10
     Corner "monte"
      Test "AC"
        Output DCGain = 26.62012
        Output Current = 0.007129663
        Output InputRandomOffset = 2.398646e-05
      Test "TRAN"
        Output SlewRate = 1.791243e+08
        Output SettlingTime = 1.397948e-08
    Point 11
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61985
        Output Current = 0.007132983
        Output InputRandomOffset = 3.695114e-05
      Test "TRAN"
        Output SlewRate = 1.790648e+08
        Output SettlingTime = 1.400905e-08
    Point 12
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61472
        Output Current = 0.007132587
        Output InputRandomOffset = 8.899188e-05
      Test "TRAN"
        Output SlewRate = 1.787391e+08
        Output SettlingTime = 1.402945e-08
    Point 13
     Corner "monte"
      Test "AC"
        Output DCGain = 26.60953
        Output Current = 0.007132204
        Output InputRandomOffset = 9.009448e-05
      Test "TRAN"
        Output SlewRate = 1.790462e+08
        Output SettlingTime = 1.395112e-08
    Point 14
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61411
        Output Current = 0.007133704
        Output InputRandomOffset = 6.067634e-05
      Test "TRAN"
        Output SlewRate = 1.79311e+08
        Output SettlingTime = 1.389206e-08
    Point 15
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61215
        Output Current = 0.007131099
        Output InputRandomOffset = 3.555568e-05
      Test "TRAN"
        Output SlewRate = 1.790719e+08
        Output SettlingTime = 1.373346e-08
    Point 16
     Corner "monte"
      Test "AC"
        Output DCGain = 26.6077
        Output Current = 0.007129001
        Output InputRandomOffset = 1.643375e-05
      Test "TRAN"
        Output SlewRate = 1.788233e+08
        Output SettlingTime = 1.393857e-08
    Point 17
     Corner "monte"
      Test "AC"
        Output DCGain = 26.62002
        Output Current = 0.007132239
        Output InputRandomOffset = 8.575537e-05
      Test "TRAN"
        Output SlewRate = 1.79252e+08
        Output SettlingTime = 1.396572e-08
    Point 18
     Corner "monte"
      Test "AC"
        Output DCGain = 26.60813
        Output Current = 0.007134136
        Output InputRandomOffset = 5.92261e-05
      Test "TRAN"
        Output SlewRate = 1.790981e+08
        Output SettlingTime = 1.393092e-08
    Point 19
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61315
        Output Current = 0.007130273
        Output InputRandomOffset = 6.66229e-05
      Test "TRAN"
        Output SlewRate = 1.788027e+08
        Output SettlingTime = 1.393877e-08
    Point 20
     Corner "monte"
      Test "AC"
        Output DCGain = 26.60514
        Output Current = 0.007128954
        Output InputRandomOffset = 4.443726e-05
      Test "TRAN"
        Output SlewRate = 1.789258e+08
        Output SettlingTime = 1.407111e-08
    Point 21
     Corner "monte"
      Test "AC"
        Output DCGain = 26.60751
        Output Current = 0.007126038
        Output InputRandomOffset = 9.609869e-05
      Test "TRAN"
        Output SlewRate = 1.786193e+08
        Output SettlingTime = 1.366716e-08
    Point 22
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61212
        Output Current = 0.007133545
        Output InputRandomOffset = 1.036315e-05
      Test "TRAN"
        Output SlewRate = 1.788963e+08
        Output SettlingTime = 1.408513e-08
    Point 23
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61903
        Output Current = 0.007130053
        Output InputRandomOffset = 8.590331e-05
      Test "TRAN"
        Output SlewRate = 1.788476e+08
        Output SettlingTime = 1.409702e-08
    Point 24
     Corner "monte"
      Test "AC"
        Output DCGain = 26.60912
        Output Current = 0.007131058
        Output InputRandomOffset = 2.494532e-05
      Test "TRAN"
        Output SlewRate = 1.789813e+08
        Output SettlingTime = 1.384203e-08
    Point 25
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61078
        Output Current = 0.007130541
        Output InputRandomOffset = 5.601483e-06
      Test "TRAN"
        Output SlewRate = 1.788809e+08
        Output SettlingTime = 1.40394e-08
    Point 26
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61659
        Output Current = 0.007132681
        Output InputRandomOffset = 3.311758e-05
      Test "TRAN"
        Output SlewRate = 1.78871e+08
        Output SettlingTime = 1.392818e-08
    Point 27
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61788
        Output Current = 0.007129114
        Output InputRandomOffset = 2.582815e-05
      Test "TRAN"
        Output SlewRate = 1.786775e+08
        Output SettlingTime = 1.385714e-08
    Point 28
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61551
        Output Current = 0.007132636
        Output InputRandomOffset = 9.534415e-05
      Test "TRAN"
        Output SlewRate = 1.787668e+08
        Output SettlingTime = 1.394735e-08
    Point 29
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61397
        Output Current = 0.007126687
        Output InputRandomOffset = 1.019254e-06
      Test "TRAN"
        Output SlewRate = 1.791389e+08
        Output SettlingTime = 1.376032e-08
    Point 30
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61921
        Output Current = 0.007130549
        Output InputRandomOffset = 7.679703e-05
      Test "TRAN"
        Output SlewRate = 1.789285e+08
        Output SettlingTime = 1.385714e-08
    Point 31
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61492
        Output Current = 0.007129479
        Output InputRandomOffset = 0.0001884253
      Test "TRAN"
        Output SlewRate = 1.784659e+08
        Output SettlingTime = 1.391552e-08
    Point 32
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61072
        Output Current = 0.007130398
        Output InputRandomOffset = 0.0001261333
      Test "TRAN"
        Output SlewRate = 1.790023e+08
        Output SettlingTime = 1.389761e-08
    Point 33
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61001
        Output Current = 0.007128622
        Output InputRandomOffset = 3.550494e-05
      Test "TRAN"
        Output SlewRate = 1.791407e+08
        Output SettlingTime = 1.385859e-08
    Point 34
     Corner "monte"
      Test "AC"
        Output DCGain = 26.60681
        Output Current = 0.007129946
        Output InputRandomOffset = 2.608036e-05
      Test "TRAN"
        Output SlewRate = 1.789316e+08
        Output SettlingTime = 1.398846e-08
    Point 35
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61792
        Output Current = 0.007128379
        Output InputRandomOffset = 4.553098e-05
      Test "TRAN"
        Output SlewRate = 1.789963e+08
        Output SettlingTime = 1.370229e-08
    Point 36
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61357
        Output Current = 0.007127615
        Output InputRandomOffset = 7.992486e-05
      Test "TRAN"
        Output SlewRate = 1.789786e+08
        Output SettlingTime = 1.390325e-08
    Point 37
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61824
        Output Current = 0.007133871
        Output InputRandomOffset = 3.474212e-05
      Test "TRAN"
        Output SlewRate = 1.789361e+08
        Output SettlingTime = 1.411751e-08
    Point 38
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61563
        Output Current = 0.007128521
        Output InputRandomOffset = 8.906054e-05
      Test "TRAN"
        Output SlewRate = 1.788392e+08
        Output SettlingTime = 1.390856e-08
    Point 39
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61355
        Output Current = 0.007135019
        Output InputRandomOffset = 0.0001166507
      Test "TRAN"
        Output SlewRate = 1.786566e+08
        Output SettlingTime = 1.399558e-08
    Point 40
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61796
        Output Current = 0.007132196
        Output InputRandomOffset = 0.0001017524
      Test "TRAN"
        Output SlewRate = 1.789147e+08
        Output SettlingTime = 1.386755e-08
    Point 41
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61831
        Output Current = 0.007129846
        Output InputRandomOffset = 3.247291e-05
      Test "TRAN"
        Output SlewRate = 1.787274e+08
        Output SettlingTime = 1.379588e-08
    Point 42
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61955
        Output Current = 0.007129576
        Output InputRandomOffset = 3.918726e-05
      Test "TRAN"
        Output SlewRate = 1.787592e+08
        Output SettlingTime = 1.404533e-08
    Point 43
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61081
        Output Current = 0.007130118
        Output InputRandomOffset = 0.0001379101
      Test "TRAN"
        Output SlewRate = 1.789876e+08
        Output SettlingTime = 1.402347e-08
    Point 44
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61349
        Output Current = 0.007130857
        Output InputRandomOffset = 3.861204e-05
      Test "TRAN"
        Output SlewRate = 1.789541e+08
        Output SettlingTime = 1.404501e-08
    Point 45
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61638
        Output Current = 0.007131903
        Output InputRandomOffset = 6.901756e-05
      Test "TRAN"
        Output SlewRate = 1.789567e+08
        Output SettlingTime = 1.394657e-08
    Point 46
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61354
        Output Current = 0.007132699
        Output InputRandomOffset = 2.696142e-06
      Test "TRAN"
        Output SlewRate = 1.789026e+08
        Output SettlingTime = 1.402844e-08
    Point 47
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61478
        Output Current = 0.007126334
        Output InputRandomOffset = 2.551349e-05
      Test "TRAN"
        Output SlewRate = 1.790768e+08
        Output SettlingTime = 1.395801e-08
    Point 48
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61791
        Output Current = 0.007129454
        Output InputRandomOffset = 2.785904e-05
      Test "TRAN"
        Output SlewRate = 1.790303e+08
        Output SettlingTime = 1.399237e-08
    Point 49
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61437
        Output Current = 0.007130836
        Output InputRandomOffset = 8.456839e-05
      Test "TRAN"
        Output SlewRate = 1.78799e+08
        Output SettlingTime = 1.401912e-08
    Point 50
     Corner "monte"
      Test "AC"
        Output DCGain = 26.61648
        Output Current = 0.007129287
        Output InputRandomOffset = 6.65516e-05
      Test "TRAN"
        Output SlewRate = 1.788587e+08
        Output SettlingTime = 1.395163e-08
    1: 1.79032e+08
    2: 1.789843e+08
    3: 1.787554e+08
    4: 1.789275e+08
    5: 1.78843e+08
    6: 1.788226e+08
    7: 1.788338e+08
    8: 1.7876e+08
    9: 1.787556e+08
    10: 1.791243e+08
    11: 1.790648e+08
    12: 1.787391e+08
    13: 1.790462e+08
    14: 1.79311e+08
    15: 1.790719e+08
    16: 1.788233e+08
    17: 1.79252e+08
    18: 1.790981e+08
    19: 1.788027e+08
    20: 1.789258e+08
    21: 1.786193e+08
    22: 1.788963e+08
    23: 1.788476e+08
    24: 1.789813e+08
    25: 1.788809e+08
    26: 1.78871e+08
    27: 1.786775e+08
    28: 1.787668e+08
    29: 1.791389e+08
    30: 1.789285e+08
    31: 1.784659e+08
    32: 1.790023e+08
    33: 1.791407e+08
    34: 1.789316e+08
    35: 1.789963e+08
    36: 1.789786e+08
    37: 1.789361e+08
    38: 1.788392e+08
    39: 1.786566e+08
    40: 1.789147e+08
    41: 1.787274e+08
    42: 1.787592e+08
    43: 1.789876e+08
    44: 1.789541e+08
    45: 1.789567e+08
    46: 1.789026e+08
    47: 1.790768e+08
    48: 1.790303e+08
    49: 1.78799e+08
    50: 1.788587e+08

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ABastami
    ABastami over 10 years ago

    Hi Andrew,

    Thanks,

    I did got the code from my colleague since I was loged in to his account when I asked for the example. I would likt to ask if there is anyway to run Monte Carlo simulation using ADE generated ocean scripts. here is a short explanation what and why:

    I am already running ocean for variable sweep simulation of my blocks, and I am saving my data in to a text file. I was wondering if there is anyway I could use my ADE generated ocean scripts but only add Monte Carlo simulation and get the data for each run in to a text file. 

    Thanks in advance

    Ali

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

    Hi Ali,

    Yes. If using IC5141, you can save the OCEAN script from the Monte Carlo UI (Tools->Monte Carlo) and then use the abStats.il code. If using IC61X you can save the OCEAN script from ADE XL (with the run mode set to Monte Carlo) and then add in code similar to that which I showed above to export the data to a text file.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • MarkGr15
    MarkGr15 over 10 years ago

    Andrew,

    is there a way to open up the database, outside of the oceanxl script that runs the monte carlo simulation? I would also like to be able to open up the monte carlo data for post processing, and have it availble for processing similar to the way you showed me above.

    The reason I want to be able to do this, is so that I can get my postprocessing correct, without having to continually re-run all my sims. It would be better to just run the simulations once, and then  work on getting the  postprocessing set up correctly with the same data by just loading up the database during testing of the postprocessing.  Once I finish the postprocessing code, and have it correct, I would like to put it in the script with the code that runs the simulations.

    thanks

    Mark

    • 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