Running a parametric simulation over corners in OCEAN

Discussion in 'Cadence' started by Svenn Are Bjerkem, May 25, 2005.

  1. Hi,

    how would I be able to perform a parametric analysis over corners using
    OCEAN?

    I have 4 corner combinations, highVoltage, lowVoltage, slowTech and
    fastTech and I would like to run a parametric sweep in each of these 4
    cases.

    I tried the following:

    loadPcf("./cornerTool.pcf")
    loadDcf("./cornerTool.dcf")
    paramAnalysis("sdel" ?start 350p ?stop 400p ?lin 20 )
    cornerRun()

    but that did only cause the corner tool to run once on each corner.

    Is there support for this at all in OCEAN? The only other way would be
    to use two nested SKILL foreach loops as far as I can see, but then I
    have a problem presenting my data as I am characterising the setup and
    hold times of a flip-flop.

    Or there is a better way to find setup/hold time of flip flops over
    corners than sweeping the data vs. the clock.
     
    Svenn Are Bjerkem, May 25, 2005
    #1
  2. Svenn Are Bjerkem

    Satya Mishra Guest

    Svenn> Date: Wed, 25 May 2005 14:33:34 +0200

    Svenn> Hi,

    Svenn> how would I be able to perform a parametric analysis over
    Svenn> corners using OCEAN?

    Svenn> I have 4 corner combinations, highVoltage, lowVoltage,
    Svenn> slowTech and fastTech and I would like to run a parametric
    Svenn> sweep in each of these 4 cases.

    Svenn> I tried the following:

    Svenn> loadPcf("./cornerTool.pcf") loadDcf("./cornerTool.dcf")
    Svenn> paramAnalysis("sdel" ?start 350p ?stop 400p ?lin 20 )
    Svenn> cornerRun()

    Svenn> but that did only cause the corner tool to run once on each
    Svenn> corner.

    Svenn> Is there support for this at all in OCEAN? The only other
    Svenn> way would be to use two nested SKILL foreach loops as far
    Svenn> as I can see, but then I have a problem presenting my data
    Svenn> as I am characterising the setup and hold times of a
    Svenn> flip-flop.

    Svenn> Or there is a better way to find setup/hold time of flip
    Svenn> flops over corners than sweeping the data vs. the clock.

    I have no experience measuring setup/hold times.

    But the way to do what you are describing, as I understand, is to run
    spectre from the command line. It's pretty straightforward to setup
    loop of sweeps.

    The other more cumbersome, expensive and GUI way is to use Aptivia.

    Satya
     
    Satya Mishra, May 26, 2005
    #2
  3. Svenn Are Bjerkem

    S. Badel Guest

    SpectreMDL has a search facility that allows to sweep a parameter
    (ie, setup time) until a condition is met (ie, failure).
    This can be used to characterize setup and hold times, and is even
    shown as an example in the manual.
    You can also easily nest loops/corners etc...

    I know it's possible to have an MDL control file with the ADE GUI,
    but I don't know if one can do it in OCEAN nor how the results can
    be retrieved, since I only ran MDL from the command-line.

    stéphane
     
    S. Badel, May 27, 2005
    #3
  4. What I do is to have a clock and data toggle for some periods, the clock
    at twice the speed as the data, both generated with pulse elements. The
    data source delay time is a variable. This variable is then swept over a
    time range that spans a few time units before the clock edge to a few
    time units behind the clock edge. This is done separately for the setup
    time and the hold time. I then use the delay() calculator function to
    plot the delay between the clock edge (DtoC) and the data edge and the
    clock edge and the output edge (CtoQ). I then change the x-axis in awd
    to plot CtoQ and CtoQN vs DtoC. This give a nice curve that show what
    happens with the output as the data edge moves in the area of the clock
    edge. Depending on the kind of flip-flop you investigate, you have to
    know where on the time axis you have to simulate, but that is an initial
    iterative process that is done interactively. It gets tedious as you
    want to check vs temperatures, corners and voltages. And you would want
    to have all the CtoQ/CtoQN vs DtoC in the same plot.
    I run spectre by loading an OCEAN script on the CIW command line. I am
    trying to have create a object menu for ocean scripts (I asked a
    question about this some time ago and got some hints that I am working
    on.) I am not so far that I can start ocean from a menu item in the
    library manager, but I can at least edit them as text files from the
    library manager. That is a great advantage as I have control over the
    location of the scripts.

    So far I have started each parametric from a loop across the corners and
    voltages. I then get a bunch of simulation results that I can select in
    the Select Results menu in ADE and then just perform an update in the
    awd window.
    Aptiva is something I have to learn more about.
     
    Svenn Are Bjerkem, May 27, 2005
    #4
  5. Svenn Are Bjerkem

    S. Badel Guest

    Svenn, when you posted that question, I thought the idea was a good one.
    I wrote the code for registering an OCEAN viewType (it's not a big
    piece). so far, when you open the cellview in edit mode, it opens the
    text editor, and when you
    open it read-only it runs the script. Also, when you create a new one
    you get a template script.
    I thought of popping a form with different actions to take on the script,
    but that might be overkill as I don't know what to do with it other
    than edit and run.
    Would you have any suggestions? Maybe we can join efforts on this one?
    If your concern is about plotting, then you can use the awv* functions
    to set-up your awd window scriptically.

    stéphane
     
    S. Badel, May 28, 2005
    #5
  6. I got a tarantella connnection to work last week so that I can log in
    from home. That's convenient in order to check out such things in a
    quiet environment at home. Alas, at home there is less understanding for
    such activities ...
    Of course, we can do that, but I warn you that my contribution will
    mostly be to copy your work into my skill directory and load them from
    ..cdsinit. I am no great ressource in SKILL or OCEAN coding.
    I think I managed to do that when I worked at Continental. Problem is
    that I left all scripts behind when I left. I have been thinking about
    how to avoid that happening again. I am looking for a proper wiki to
    use. I use usemod wiki myself at work, but I need something less prone
    to spam on the 'net.
     
    Svenn Are Bjerkem, May 29, 2005
    #6
  7. SpectreMDL has a search facility that allows to sweep a parameter
    (ie, setup time) until a condition is met (ie, failure).
    This can be used to characterize setup and hold times, and is even
    shown as an example in the manual.
    You can also easily nest loops/corners etc...[/QUOTE]

    I have used this kind of measurement language in an in-house simulator
    at work (hspice-like). It is quite convenient, but really a hassle to
    learn as each simulator has their own way of describing this kind of
    measurement.
    Command line is almost impossible to accept because of the grid
    environment I work in. I also work on so many test cases at the same
    time that I need some way to organize the scripts. The library manager
    is simply the best as it is a central part of the Cadence tools that I
    use.
     
    Svenn Are Bjerkem, May 29, 2005
    #7
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.