Home > Community > Forums > Custom IC Design > spectre nested sweep in MC run fails to "export" expression

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: *

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

Last post Tue, Aug 27 2013 7:35 PM by Andrew Beckett. 11 replies.
Started by kxlux 20 Aug 2013 01:58 PM. Topic has 11 replies and 1210 views
Page 1 of 1 (12 items)
Sort Posts:
  • Tue, Aug 20 2013 1:58 PM

    • kxlux
    • Not Ranked
    • Joined on Tue, Oct 25 2011
    • Posts 10
    • Points 170
    spectre nested sweep in MC run fails to "export" expression Reply

     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.

    • Post Points: 20
  • Tue, Aug 27 2013 9:13 AM

    Re: spectre nested sweep in MC run fails to "export" expression Reply

    Were there any errors in the artil.log file?

    Regards,

    Andrew.

    • Post Points: 35
  • Tue, Aug 27 2013 10:32 AM

    • kxlux
    • Not Ranked
    • Joined on Tue, Oct 25 2011
    • Posts 10
    • Points 170
    Re: spectre nested sweep in MC run fails to "export" expression Reply

     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.
     

    • Post Points: 5
  • Tue, Aug 27 2013 11:24 AM

    • kxlux
    • Not Ranked
    • Joined on Tue, Oct 25 2011
    • Posts 10
    • Points 170
    Re: spectre nested sweep in MC run fails to "export" expression Reply

     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

     

    • Post Points: 20
  • Tue, Aug 27 2013 12:25 PM

    Re: spectre nested sweep in MC run fails to "export" expression Reply

    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.

     

    • Post Points: 20
  • Tue, Aug 27 2013 12:39 PM

    • kxlux
    • Not Ranked
    • Joined on Tue, Oct 25 2011
    • Posts 10
    • Points 170
    Re: spectre nested sweep in MC run fails to "export" expression Reply

     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

     

    • Post Points: 20
  • Tue, Aug 27 2013 12:47 PM

    Re: spectre nested sweep in MC run fails to "export" expression Reply

    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.

    • Post Points: 35
  • Tue, Aug 27 2013 1:22 PM

    • kxlux
    • Not Ranked
    • Joined on Tue, Oct 25 2011
    • Posts 10
    • Points 170
    Re: spectre nested sweep in MC run fails to "export" expression Reply
    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
    • Post Points: 5
  • Tue, Aug 27 2013 1:44 PM

    • kxlux
    • Not Ranked
    • Joined on Tue, Oct 25 2011
    • Posts 10
    • Points 170
    Re: spectre nested sweep in MC run fails to "export" expression Reply

     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

     

    • Post Points: 20
  • Tue, Aug 27 2013 2:21 PM

    Re: spectre nested sweep in MC run fails to "export" expression Reply

    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.

    • Post Points: 20
  • Tue, Aug 27 2013 3:38 PM

    • kxlux
    • Not Ranked
    • Joined on Tue, Oct 25 2011
    • Posts 10
    • Points 170
    Re: spectre nested sweep in MC run fails to "export" expression Reply

     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

    • Post Points: 20
  • Tue, Aug 27 2013 7:35 PM

    Re: spectre nested sweep in MC run fails to "export" expression Reply

    I don't understand. In your original post, you had a sweep within monte carlo (sweeping EQ from 0 to 3 in steps of 1). That would do 4*100 simulations. In a later append, you said that you wanted the measurements at each value of EQ for each monte carlo point, so that's inherently iterations*sweep_points.

    So what are you really trying to do?

    Note that the actual number of invocations of the simulator will be dependent upon the setting of the "number of jobs" in ADE XL. With the corner sweep approach, the simulator will be invoked (at least) once per corner. With a sweep of 0:1:10, if the number of jobs is less than 11, you'll get 11 jobs each running 100 MC iterations - some in parallel if you have asked for more than 1 job. If you'd asked for 22 jobs, you'd get 22 simulations in parallel, each running 50 MC iterations, etc. This is assuming you only have a single test.

    If you are trying to run 100 MC iterations total, but include the effect of varying EQ, you could always define a statistics block in an include file to define the variation of the variable EQ (maybe with a uniform distribution - maybe you vary another variable with a continuous  uniform variation, and then set EQ to be the int(contVar) if it has to be an integer). That way you'd then include random values for EQ - although I'm not entirely sure that's terribly useful (it depends on what you really are trying to measure).

    Regards,

    Andrew.

    • Post Points: 5
Page 1 of 1 (12 items)
Sort Posts:
Started by kxlux at 20 Aug 2013 01:58 PM. Topic has 11 replies.