slow MC simulations when varying temperature

Discussion in 'Cadence' started by Robert Rudolf, Oct 14, 2011.

  1. Hi,

    I've got an interesting issue with not quite orthodox Monte Carlo
    simulations using OCEAN. I'm using IC6.1.3.500.13, but with the legacy
    IC5 Monte Carlo commands. The simulator is spectre.

    I'm running particular Monte Carlo iterations at particular
    temperatures. The relevant bit of the OCEAN script is basically like this:

    monteCarlo(?numIters 1 ?startIter 12 ?nomRun nil ?seed 1234)

    to evaluate iteration #12 at 80°C.

    The above lines (with some design variable setting and result
    calculations before and after) are executed repeatedly for different MC
    parameters sets and temperatures. No results are accumulated - I just
    look at the result of a particular iteration, do something with it and
    then move on.

    The problem I'm having is that as more simulations are run, they become
    slower and slower. For instance:

    iteration | temperature | time to execute (s)
    0 21.0 5.0
    1 18.7 5.5
    2 33.6 6.0
    3 12.1 6.6
    4 17.4 7.2

    The time it takes to run each consecutive MC parameter set increases
    cumulatively, apparently without bounds. This effect creeps up to
    several minutes after a few hundred iterations. It seems that this is
    caused by the temperature changing from one MC run to the another,
    because the problem does not occur when the temperature is set to the
    same value for each run.

    Even more curiously, setting the temperature to the same value in two or
    more consecutive runs brings the execution time down to normal, but it
    then goes up again to *where it left off*, e.g.

    iteration | temperature | time to execute (s)
    0 21.0 5.0
    1 18.7 5.5
    2 33.6 6.0
    3 12.1 6.6
    4 12.1 5.0
    5 12.1 5.0
    6 17.4 7.2 (not 5.5!)

    This problem seems to only occur in Monte Carlo simulations, normal
    (run()) simulations are fine. I also tried a one-point temperature sweep
    in the monteCarlo() command instead of temp() with the same result. From
    looking at the active processes, it seems that spectre itself does not
    take longer to simulate, but that the additional time is taken up by
    virtuoso, which is sitting there with 100% CPU load. However, there is
    no significant increase in memory usage and there is no swapping going
    on. Setting the design variables before and running operations on the
    results after the simulation also seems to have no effect on this behaviour.

    So, my questions are:
    * What causes this behaviour and is there a simple way to get around it?
    Or is this a case of PEBKAC?
    * Is this positively not happening in OceanXL? I'm a bit reluctant to
    move to OceanXL because it's a bit overkill for what I need and so far
    the simple legacy "netlist in, no questions asked" operation works quite
    well. But if that's the only clean way to get around it, I might give it
    a shot.

    Thanks a lot!

    Robert Rudolf, Oct 14, 2011
    1. Advertisements

  2. Robert Rudolf wrote, on 10/14/11 21:55:

    Assuming you're using a recent MMSIM version, I wouldn't have expected this. So
    you should report this to

    Andrew Beckett, Nov 11, 2011
    1. Advertisements

  3. Hi Andrew,

    Hm, the MMSIM version I've got here is 7.11.188, so not exactly current.
    I'll see if we have access to something more recent and report to
    support if the issue still persists.


    Robert Rudolf, Nov 16, 2011
    1. Advertisements

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.