Questions using Monte Carlo with Ocean

Discussion in 'Cadence' started by NigelD, Jun 19, 2008.

  1. NigelD

    NigelD Guest

    Hi,

    I have a couple questions in trying to do Monte Carlo analysis:

    To begin I'm using IC 5.10.41, and MMSIM 6.1

    1. How does one get the entire voltage waveform from a transient
    analysis for *a particular monte carlo iteration*? I've tried:

    value(VT(<netname here>) <iteration number here>) - this doesn't work
    and gives me the value at one time across all MC iterations.
    value(value(VT(<netname here>) ) <iteration number here>) - also
    doesn't work and results in an error

    2. I'm a bit confused about how the "Mismatch" analysis works. My
    experience is that with the "Mismatch Only" option, all devices get
    uniquely assigned parameters values *once at the beginning* and these
    remain the same across all Monte Carlo iterations. This seems rather
    strange to me. This means that if I want to analyze mismatch for a
    simple inverter, I'd have to have N inverters all on the same
    schematic and only do 1 MC iteration. Is it not possible to do 1
    inverter on the schematic and N iterations to satisfy this? If so, how
    do I achieve this?

    Thanks!
    Nigel.
     
    NigelD, Jun 19, 2008
    #1
  2. Nigel,

    Answers interspersed:

    NigelD wrote, on 06/19/08 14:19:
    You need to use:

    No, that's not what happens. Not sure why you think it is? You might want to
    take a look at:

    http://www.designers-guide.org/Modeling/montecarlo.pdf

    For example, if I use this netlist:

    // monte example
    parameters rval=948 mytemp=27

    //opts options temp=mytemp

    statistics {
    process {
    vary rval dist=gauss std=53
    vary mytemp dist=unif N=50
    }
    mismatch {
    vary rval dist=gauss std=53
    }
    }

    inline subckt myres (a b)
    myres (a b) resistor r=rval tc1=0.1
    ends myres

    subckt block (2 1)
    r1 (2 1) myres
    r2 (1 0) myres
    //r1 (2 1) resistor r=rval
    //r2 (1 0) resistor r=rval
    ends block

    b1 (2 1) block
    //r2 (1 0) resistor r=948
    v1 (2 0) vsource dc=2.4

    mc montecarlo donominal=no variations=mismatch numruns=200 \
    scalarfile="mcdata" paramfile="mcparam" sampling=lhs {
    dcOp dc
    element info what=inst where=rawfile
    export midval=oceanEval("v(\"1\" ?result 'dcOp)")
    export r1val=oceanEval("pv(\"b1.r1\" \"r\" ?result 'instance)")
    export r2val=oceanEval("pv(\"b1.r2\" \"r\" ?result 'instance)")
    }

    I get in the mcdata file:

    1.19905 966.209 964.679
    1.23603 897.304 952.852
    1.21993 990.531 1023.99
    1.18879 1041.51 1022.23
    1.20323 939.099 944.164
    1.21473 904.81 927.304
    1.22939 921.2 967.454
    1.24467 885.973 954.484
    1.17017 980.134 932.593
    1.22026 905.35 936.439
    1.1637 865.762 814.918
    1.21057 944.167 960.943


    etc. So you can see the resistor values are changing between iterations, and
    between the two resistors. I'm only doing mismatch here.

    Regards,

    Andrew.
     
    Andrew Beckett, Jun 19, 2008
    #2
  3. NigelD

    NigelD Guest

    Thanks!
     
    NigelD, Jun 19, 2008
    #3
  4. NigelD

    NigelD Guest

    Hi Andrew,

    I still have the same issues with Mismatch analysis in Monte Carlo -
    when I look at my mcdata file when doing "Mismatch Only", I see only
    one column (for my output variable) and all the values in that column
    are identical. So it's obvious that the way I'm doing it, mismatch is
    not being applied. I've verified that there is indeed a mismatch
    section within the statistics section of the models. All the
    transistor models are inline subcircuits, just as the example in the
    document you linked to. Unfortunately I cannot post anything from the
    process file due to an NDA, but are there other ways of debugging
    this?

    Thanks,
    Nigel.
     
    NigelD, Jul 9, 2008
    #4
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.