• 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. spectre nested sweep in MC run fails to "export" expres...

Stats

  • Locked Locked
  • Replies 11
  • Subscribers 125
  • Views 6380
  • 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

spectre nested sweep in MC run fails to "export" expression

kxlux
kxlux over 12 years ago

 Here is my netlist(analysis part of.., produced from ADEXL):

________________________________________________________________________________________

simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12 temp=70 \
    tnom=27 homotopy=dptran scalem=1.0 scale=1.0 gmin=1e-12 rforce=1 \
    maxnotes=5 maxwarns=5 digits=5 cols=80 pivrel=1e-3 \
    sensfile="../psf/sens.output" checklimitdest=psf
mc1 montecarlo numruns=1 seed=12345 variations=all sampling=standard \
    donominal=no scalarfile="../monteCarlo/mcdata" \
    paramfile="../monteCarlo/mcparam" saveprocessparams=yes \
    processparamfile="../monteCarlo/processParam" \
    processscalarfile="../monteCarlo/processData" savemismatchparams=yes \
    mismatchparamfile="../monteCarlo/mismatchparam" \
    mismatchscalarfile="../monteCarlo/mismatchdata" \
    dumpdependency=mismatch \
    dependencymapfile="../monteCarlo/mismatchdependency" \
    savefamilyplots=yes savedatainseparatedir=yes firstrun=15 {
swp0 sweep param=EQ values=[0 1 2 3] {
dcOp0 dc write="spectre.dc" maxiters=150 maxsteps=10000 annotate=status
dcOpInfo0 info what=oppoint where=rawfile
ac0 ac start=10K stop=10G lin=1 annotate=status
modelParameter0 info what=models where=rawfile
element0 info what=inst where=rawfile
outputParameter0 info what=output where=rawfile
designParamVals0 info what=parameters where=rawfile
primitives0 info what=primitives where=rawfile
export real Gain100k0=oceanEval("value((dB20((VF(\"VOP\") - VF(\"VON\"))) - dB20((VF(\"CHINP\") - VF(\"CHINN\")))) 1e+4)")
export real Gain13G0=oceanEval("value((dB20((VF(\"VOP\") - VF(\"VON\"))) - dB20((VF(\"CHINP\") - VF(\"CHINN\")))) 1.0e+10)")
}

}
mcOptions options genmcdep=yes
save V10CUR:p V33CUR:p VIP_IN VIN_IN I1.I1.CTLEOUT2 I1.I1.CTLEOUT2B VOP \
    VON CHINP CHINN I1.I1.I0.CTLEOUT1 I1.I1.I0.CTLEOUT1B I2.I15.M7:1 \
    I2.I15.M17:1
saveOptions options save=selected
__________________________________________________________________________________________________

 Here is files generated in psf dir:

artil.log       

logFile     

mc1_ac1.montecarlo  

mc1_dcOpInfo.montecarlo        

mc1_element.montecarlo        

mc1_outputParameter.montecarlo 

mc1_separate
ipvs_ui.msg.log 

mc1.mapping 

mc1_dcOp.montecarlo 

mc1_designParamVals.montecarlo 

mc1_modelParameter.montecarlo 

mc1_primitives.montecarlo      

spectre.out

_________________________________________________________________

The "mc1_separate"is a dir containing sweep result files:

 -rw-r--r-- 1 workareas        0 Aug 20 10:40 ipvs_ui.msg.log
-rw-r--r-- 1 workareas     1231 Aug 16 21:31 logFile
-rw-r--r-- 1 workareas     4872 Aug 16 21:30 mc1_swp-000_ac1.ac
-rw-r--r-- 1 workareas     4036 Aug 16 21:30 mc1_swp-000_dcOp.dc
-rw-r--r-- 1 workareas  4012008 Aug 16 21:30 mc1_swp-000_dcOpInfo.info
-rw-r--r-- 1 workareas   183276 Aug 16 21:30 mc1_swp-000_designParamVals.info
-rw-r--r-- 1 workareas  4437996 Aug 16 21:30 mc1_swp-000_element.info
-rw-r--r-- 1 workareas 32983396 Aug 16 21:30 mc1_swp-000_modelParameter.info
-rw-r--r-- 1 workareas  1109648 Aug 16 21:30 mc1_swp-000_outputParameter.info
-rw-r--r-- 1 workareas    13935 Aug 16 21:30 mc1_swp-000_primitives.info.primitives
-rw-r--r-- 1 workareas     4872 Aug 16 21:31 mc1_swp-001_ac1.ac
-rw-r--r-- 1 workareas     4036 Aug 16 21:31 mc1_swp-001_dcOp.dc
-rw-r--r-- 1 workareas  4012008 Aug 16 21:31 mc1_swp-001_dcOpInfo.info
-rw-r--r-- 1 workareas   183276 Aug 16 21:31 mc1_swp-001_designParamVals.info
-rw-r--r-- 1 workareas  4437996 Aug 16 21:31 mc1_swp-001_element.info
-rw-r--r-- 1 workareas 32983396 Aug 16 21:31 mc1_swp-001_modelParameter.info
-rw-r--r-- 1 workareas  1109648 Aug 16 21:31 mc1_swp-001_outputParameter.info
-rw-r--r-- 1 workareas    13935 Aug 16 21:31 mc1_swp-001_primitives.info.primitives
-rw-r--r-- 1 workareas     4872 Aug 16 21:31 mc1_swp-002_ac1.ac
-rw-r--r-- 1 workareas     4036 Aug 16 21:31 mc1_swp-002_dcOp.dc
-rw-r--r-- 1 workareas  4012008 Aug 16 21:31 mc1_swp-002_dcOpInfo.info
-rw-r--r-- 1 workareas   183276 Aug 16 21:31 mc1_swp-002_designParamVals.info
-rw-r--r-- 1 workareas  4437996 Aug 16 21:31 mc1_swp-002_element.info
-rw-r--r-- 1 workareas 32983396 Aug 16 21:31 mc1_swp-002_modelParameter.info
-rw-r--r-- 1 workareas  1109648 Aug 16 21:31 mc1_swp-002_outputParameter.info
-rw-r--r-- 1 workareas    13935 Aug 16 21:31 mc1_swp-002_primitives.info.primitives
-rw-r--r-- 1 workareas     4872 Aug 16 21:31 mc1_swp-003_ac1.ac
-rw-r--r-- 1 workareas     4036 Aug 16 21:31 mc1_swp-003_dcOp.dc
-rw-r--r-- 1 workareas  4012008 Aug 16 21:31 mc1_swp-003_dcOpInfo.info
-rw-r--r-- 1 workareas   183276 Aug 16 21:31 mc1_swp-003_designParamVals.info
-rw-r--r-- 1 workareas  4437996 Aug 16 21:31 mc1_swp-003_element.info
-rw-r--r-- 1 workareas 32983396 Aug 16 21:31 mc1_swp-003_modelParameter.info
-rw-r--r-- 1 workareas  1109648 Aug 16 21:31 mc1_swp-003_outputParameter.info
-rw-r--r-- 1 workareas    13935 Aug 16 21:31 mc1_swp-003_primitives.info.primitives
-rw-r--r-- 1 workareas     3432 Aug 16 21:31 mc1_swp_ac1.sweep
-rw-r--r-- 1 workareas     3432 Aug 16 21:31 mc1_swp_dcOp.sweep
-rw-r--r-- 1 workareas     3436 Aug 16 21:31 mc1_swp_dcOpInfo.sweep
-rw-r--r-- 1 workareas     3444 Aug 16 21:31 mc1_swp_designParamVals.sweep
-rw-r--r-- 1 workareas     3436 Aug 16 21:31 mc1_swp_element.sweep
-rw-r--r-- 1 workareas     3444 Aug 16 21:31 mc1_swp_modelParameter.sweep
-rw-r--r-- 1 workareas     3444 Aug 16 21:31 mc1_swp_outputParameter.sweep
-rw-r--r-- 1 workareas     3440 Aug 16 21:31 mc1_swp_primitives.sweep
_________________________________________________________________________________________

questions:

1. why the "export" was not executed?

2.  how to plot an expression from resultsdirectory?

 

what i am trying to achieve is do a DC followed by an AC within each MC run and nested with a sweep of a parameter.

 appreciate any feedbacks.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    Were there any errors in the artil.log file?

    Regards,

    Andrew.

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

     Andrew,

    Which file  usually contains the results?  Here is the artil.log:

    Loading auCore.cxt
    Loading awv.cxt
    "mps14630"
    > Loading oasis.cxt
    *INFO* (icLic-25) License Analog_Design_Environment_XL ("ADE XL") was used to run ADE L.
    Loading analog.cxt
    Loading asimenv.cxt
    Loading spectrei.cxt
    Loading relXpert.cxt
    WARNING (OCN-6038): Results mc1_swp0-000_primitives0-info are not available for ../psf/logFile.tmp. Use results() for a list of available results.
    WARNING (OCN-6038): Results mc1_swp0-001_primitives0-info are not available for ../psf/logFile.tmp. Use results() for a list of available results.
    WARNING (OCN-6038): Results mc1_swp0-002_primitives0-info are not available for ../psf/logFile.tmp. Use results() for a list of available results.
    WARNING (OCN-6038): Results mc1_swp0-003_primitives0-info are not available for ../psf/logFile.tmp. Use results() for a list of available results.
     

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

     Andrew,

    Also I am looking for a way to embed this "sweep" in ADEXL GUI, so that results can be displayed in ADEXL. Aprreciate any input.

    thanks

     

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

    Ah, hang on. I didn't notice that you'd added a sweep inside the monte carlo. That's not supported... that's probably why it doesn't work.

    From the command line, you can put the sweep outside the monte carlo - that's what IC5141 used to do if you specified a list of (say) temperatures to run at.

    With ADE XL however, you'd do it by defining a corner with a sweep in it. A corner can contain sweeps - you simply define the variable to have a sweep. With IC615 there's a GUI way of doing this in the corners UI, but even before that you could just set the value of (say) EQ to have values 0,1,2,3, or to be 0:1:3 (0 to 3 in steps of size 1).

    ADE XL will run each of the monte carlos separately (so they can run in parallel), but will be able to handle the results.

    You can't (currently) combine a variable or parameter sweep with monte carlo in ADE XL (this is partly an architectural limitation, partly a limitation on how to present the results), but a sweep within a corner is perfectly OK and works fine. You'll then get statistics or histograms for each value of EQ.

    Regards,

    Andrew.

     

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

     Thanks Andrew

    for the quick response, I think we are almost on the same page!!

    Here is what I trying to do:

    I want to run Monte Carlo(100 runs, within each MC run, I want to sweep EQ(parameter) from 0 to 10 and for each EQ setting I need to run DC and AC together(child analysis). I want the results(export) to besaved on each MC run and each EQ setting.

    What is the best approach to get this done?

    thanks

     

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

    That's exactly what the corner sweep I'm talking about in ADE XL will do for you.

    If you look at the "Detailed" output, you'll see 11 corner columns (assuming you're sweeping from 0 to 10 in steps of 1, i.e. 0:1:10 in the corner setup), and 100 rows, one for each MC iteration. You'll have each measurement shown for each EQ/MC combination. On the Yield view, you'll see the mean/sigma for each EQ value, and also be able to plot histograms for each EQ value.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kxlux
    kxlux over 12 years ago
    Andrew,

    tried and ADEXL doesn't allow MC with sweep, see below,

    Here is what I am doing:

    set a monte carlo corner where model file points to MC model file, and  set EQ to 0:1:3

    what am doing wrong? I am using IC6.1.5

    thanks
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • kxlux
    kxlux over 12 years ago

     Andrew,

    it doesn't let me run: error message as following:

    ADEXL-1742: cannot run"Monte Carlo Sampling' with swept variable. you are trying to run Monte Carlo with sweeps enabled.

    thanks

     

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

    That's because you're trying to sweep the variable from the global variables. As I said before, that is not supported in ADE XL.

    You must do the sweep in a corner for this to work. Expand the corners in the Data View assistant, and click on the "Click to add corner". Add a corner with the "Add New Corner" icon (it's a thermometer with a *). In the Variables section, hit the Click to add, and in the cyclic that appears, pick EQ. In the column for your new column, type 0:1:10 (or click in the field, and then hit the Set Sweep Value icon (the dial icon) - this can also be found in the right mouse button over the field - if you do that you get a form like you get in the Variables part of the Data View assistant to set up the sweep.

    At the bottom of the corner definition, you'll see that the number of corners will reflect the number of points in the sweep within the corner - effectively a corner can have a number of sub-corners.

    You can also set up the models from the corner definition too - although it's not essential. If you don't it will pick the model setup from the test (if my memory is correct).

    Of course, you'll need to disable the sweep from the variables section of the data view assistant.

    Regards,

    Andrew.

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

     Andrew,

    this looks like a solution except that the number of sims to be run is huge, in my case, it is 100(MC runs)x 11(EQ sweep), while my initialgoal was to reduce the number of sims(to 100); this is critical to save time especially in post layout simulation where you have netlists of Giga bit size

    thanks

    • 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