• 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. Ocean command to access the result stored during Monte-carlo...

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 125
  • Views 14857
  • 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

Ocean command to access the result stored during Monte-carlo Simulation

Ishant Anand
Ishant Anand over 7 years ago

Hello,

I am doing the monte-carlo simulation using ocean Script. Whenever, we run the monte-carlo simulation and when it gets completed results of that run got stored in a separate folder with name "adexl" in the current working directory of the same cell view folder.

Is their any command in ocean that allows to access the result stored, so that further analysis can be done on that without performing the monte carlo simulation again??

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    Please provide:

    1. The version of the IC tools you're using (what does getVersion(t)) return).
    2. The rough outline of the OCEAN script you're using - are you using ocnxl functions, or the legacy-mode monteRun functions?
    3. What kind of "result" data are you looking to access?

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Ishant Anand
    Ishant Anand over 7 years ago in reply to Andrew Beckett

    Hello,

    1. version of the IC tools: sub-version IC6.1.5.500.15

    2. I am uploading my complete ocean script so it would be easy to see what am i doing

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Ocean script;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


    vol=0.3

    tm=400n


    ocnSetXLMode()
    ocnxlProjectDir( "~/simulation" )
    ocnxlTargetCellView( "array_28" "full_orig_dice" "adexl" )
    ocnxlResultsLocation( "" )
    ocnxlSimResultsLocation( "" )
    of=outfile("/home/neelam/Documents/dice2_65_28/check_orig_6T" "a")
    fprintf(of "\nff\n")
    drain(of)

    ;====================== Tests setup ============================================

    ;---------- Test "array_28:full_orig_dice:1" -------------
    ocnxlBeginTest("array_28:full_orig_dice:1")
    simulator( 'spectre )
    design( "array_28" "full_orig_dice" "schematic")
    modelFile(
        '("/home/neelam/Documents/umc_28/UM028FDKHPC0000OA_A13_DESIGNKIT/UM028FDKHPC0000OA_A13_PB/umc28hlp/../Models/Spectre/l28hlp_mm_v141.lib.scs" "ff_g")
    )



    analysis('tran ?stop 30*tm  )
    desVar(      "x" vol    )
    desVar(      "y" tm    )
    envOption(
        'analysisOrder  list("tran")
    )
    saveOption( ?simOutputFormat "psf" )
    saveOption( 'pwr "all" )
    temp( 27 )

    option(    'nthreads  "6"
        'multithread  "on"
    )
     
    ocnxlOutputSignal( "/data")
    ocnxlOutputSignal( "/bit" ?plot t)
    ocnxlOutputSignal( "/bit_b")
    ocnxlOutputSignal( "/wl" ?plot t)
    ocnxlOutputSignal( "/first" ?plot t)
    ocnxlOutputSignal( "/sec")
    ocnxlOutputSignal( "/read_charge")
    ocnxlOutputSignal( "/rbl" ?plot t)
    ocnxlOutputSignal( "/rwl" ?plot t)
    ocnxlEndTest() ; "array_28:full_orig_dice:1"


    ;====================== Model Group setup ==========================================

    ;====================== Corners setup ==========================================

    ;====================== Job setup ==============================================
    ocnxlJobSetup( '(
        "blockemail" "1"
        "configuretimeout" "300"
        "distributionmethod" "Local"
        "lingertimeout" "300"
        "maxjobs" "1"
        "name" "ADE XL Default"
        "preemptivestart" "1"
        "reconfigureimmediately" "1"
        "runtimeout" "-1"
        "showerrorwhenretrying" "1"
        "showoutputlogerror" "0"
        "startmaxjobsimmed" "1"
        "starttimeout" "300"
    ) )

    ;====================== Run Mode Options ======================================
    ocnxlMonteCarloOptions( ?mcMethod "all" ?mcNumPoints "10000" ?mcNumBins "" ?mcStopEarly "0" ?mcStopMethod "Significance Test" ?samplingMode "random" ?saveProcess "1" ?saveMismatch "1" ?useReference "0" ?donominal "1" ?saveAllPlots "1" ?monteCarloSeed "" ?mcStartingRunNumber "" ?dumpParamMode "yes" )

    ;====================== Starting Point Info ======================================

    ;====================== Run command ============================================
    ocnxlRun( ?mode 'monteCarlo ?nominalCornerEnabled t ?allCornersEnabled t ?allSweepsEnabled t)
    ocnxlOutputSummary(?yieldSummary t ?exprSummary nil ?specSummary nil ?detailed nil)
    ocnxlOpenResults()

    count0=0
    count1=0

    rcount0=0
    rcount1=0

    i=1
    while(i<=10000
        b1=value(value(getData("/first" ?result "tran") "mcparamset" i) 12*tm   )
        if(b1> 0.4*vol
            then
            count0=count0+1
         )

        b2=value(value(getData("/first" ?result "tran") "mcparamset" i) 21*tm   )
        if(b2<0.6*vol
            then
            count1=count1+1
        )


        rb1=value(value(getData("/first" ?result "tran") "mcparamset" i) 17*tm   )
        if(rb1> 0.4*vol
            then
            rcount0=rcount0+1
         )

        rb2=value(value(getData("/first" ?result "tran") "mcparamset" i) 26*tm   )
        if(rb2<0.6*vol
            then
            rcount1=rcount1+1
        )



        i=i+1
    )
    fprintf(of " No. of write failure in 0:%d at voltage:%f\n" count0 vol)
    fprintf(of " No. of write failure in 1:%d at voltage:%f\n" count1 vol)

    fprintf(of " No. of read failure in 0:%d at voltage:%f\n" rcount0 vol)
    fprintf(of " No. of read failure in 1:%d at voltage:%f\n" rcount1 vol)


    drain(of)

    ;====================== End XL Mode command ===================================
    ocnxlEndXLMode()

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;End ocean Script;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    3. As you can see in the script, once the monte-carlo is being done then I am accessing each saved result to perform further operation.

    Once the monte-carlo is being done then results of that run got stored in a separate folder with name "adexl" in the current working directory of the same cell view folder. And then it access that run internally to get the result. Can i  access that stored run without running the monte-carlo again??

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to Ishant Anand
    What you can do is:
    openResults("path/to/simulation/libName/cellName/adexlViewName/results/data/MonteCarlo.14/psf/testName”)
    then you should be able to run the code at the end of your OCEAN XL script, as it’s pointing at the overall set of results. Obviously you need to set the libName, cellName etc and the right history name - the bits in italics above, but other than that it should be straightforward.
    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