to run parametric simulation over different corners using analog artist

Discussion in 'Cadence' started by shanu.sudalai, Oct 24, 2005.

  1. Hi,
    Iam analysing an NMOS ciruit for different CORNERS and also for
    different parametric simulatons sweep such as temperature and body
    voltage. Iam doing all my simulations using analog artist GUI.

    I could run my NMOS circuit for different CORNERS without any
    parametric sweep perfectly using Analog artist. But when i try to do
    parametric sweep and plot the same, iam not able to view the different
    parametric sweep curves for different CORNERS using analog artist.

    In regard to this problem, i also checked a previous post concerning
    parametric simulation for different CORNERS using OCEAN. But i could
    not understand the solution posted in that post very much since iam
    very new to this cadence and also to OCEAN script.

    I would like to know if there is any solution to this problem using
    analog artist ????
    Or
    I can only run this kind of simulation using OCEAN script ???
    If so i would be glad if some one can help me out to do the same using
    an OCEAN script.
    Also any tips using analog artist.

    Thankyou very much,
    shanthi
     
    shanu.sudalai, Oct 24, 2005
    #1
  2. You want to run your parametric simualtion over corners?
    This is because analog artist does not support this. The corner tool and
    the parametric tool are two different tools that do not know about each
    other.
    It would help if you put a groups.google.com reference to the thread
    that you have already read in order to clarify what you already know.
    With OCEAN you can do everyhing on the command line. You just have to
    learn to program LISP first.
     
    Svenn Are Bjerkem, Oct 25, 2005
    #2
  3. Hi Svenn,

    Yes, I wanted to do parametric simulations over corners.
    In fact iam running a DC analysis and also parametric analysis for two
    other variables.


    I tried with analog artist, but it did not work (understood the reason
    ).

    So i tried using OCEAN script, even that did not succeed since iam very
    new to this OCEAN script.

    I referred to the the thread named ""Running a parametric simulation
    over corners in OCEAN"", dated 25 May 14:33. That was posted by you in
    fact.

    I also tried the same OCEAN script as you did, which goes as
    follows,,,,

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

    But it didnot gave me the answers for different corners using
    parametric analysis ::::

    I also checked the whole thread, but i didnot get any idea regarding
    the solution posted in that thread.
    Can you give me clue to go ahead with this problem ??

    Thanks,
    shanthi
     
    shanu.sudalai, Oct 26, 2005
    #3
  4. I was fearing that, yes.
    I didn't find any either. (Wrote my own, see below)
    I had the opportunity to switch to our in-house simulator on commandline
    and did that as time was running out. In a different case I wrote my own
    routine to do setup and hold time simulation over corner with parametric
    sim: (You may have to add or remove some lines to get this to work for
    your setup)



    (load "SABdoPlot.il")
    (ocnWaveformTool 'awd )
    (simulator 'spectre )
    (setq host (getHostName))
    (setup
    ?numberNotation 'engineering
    ?messageOn nil)

    (design "wk_bjerkem" "dff" "schematic" "r" )

    (setq modelsDir "/modeldir")
    (foreach var (list
    ;nth 0 1 2 3 4 5
    (list "nom-LV-RT" "0.9" "nom" "27.0" -20p 20p)
    (list "nom-LV-HT" "0.9" "nom" "125.0" -20p 20p)
    (list "nom-HV-RT" "1.1" "nom" "27.0" -20p 20p)
    (list "nom-HV-HT" "1.1" "nom" "125.0" -20p 20p)
    (list "slow-LV-RT" "0.9" "slow" "27.0" -20p 20p)
    (list "slow-LV-HT" "0.9" "slow" "125.0" -20p 20p)
    (list "slow-HV-RT" "1.1" "slow" "27.0" -20p 20p)
    (list "slow-HV-HT" "1.1" "slow" "125.0" -20p 20p)
    (list "fast-LV-RT" "0.9" "fast" "27.0" -20p 20p)
    (list "fast-LV-HT" "0.9" "fast" "125.0" -20p 20p)
    (list "fast-HV-RT" "1.1" "fast" "27.0" -20p 20p)
    (list "fast-HV-HT" "1.1" "fast" "125.0" -20p 20p))
    (setq Run (nth 0 var))
    (setq Voltage (nth 1 var))
    (setq Corner (nth 2 var))
    (setq Temp (nth 3 var))
    (setq Start (nth 4 var))
    (setq Stop (nth 5 var))

    (resultsDir (strcat baseDir "/" Run) )
    (desVar "vvdd" Voltage)
    (temp Temp)
    (modelFile (list (strcat modelsDir "include.scs") Corner))
    (paramAnalysis "tdeltalead" ?start Start ?stop Stop ?lin 11
    (paramAnalysis "tdeltalag" ?start 20p ?stop 100p ?lin 11 ))
    (printf "%s %L\n" desVar("vvdd") modelFile())
    (paramRun ?block nil)
    (SABdoPlot ?title (strcat "setup-time " Run)
    ?subtitle (strcat "C=" Corner " "
    "V=" Voltage "V "
    "T=" Temp "degC")
    ?xrange '(-20p 30p)
    ?yrange '(0p 200p))
    (SABdoPlot ?title (strcat "hold-time " Run)
    ?subtitle (strcat "C=" Corner " "
    "V=" Voltage "V "
    "T=" Temp "degC")
    ?xrange '(20p 100p)
    ?yrange '(0p 1500p))
    return
    )

    ;; SABdoPlot.il
    ;; This is a procedure to create some plots after each simulation
    ;; has been run.
    procedure(SABdoPlot(
    @key
    (title " ")
    (subtitle "")
    xrange
    yrange
    (bbox list(100:200 800:800))
    )
    "Adjusts Waveform Window Size, sets titles, and Plot Options"
    (let (wid plotfile)
    wid = newWindow()
    hiResizeWindow(wid bbox)
    awvDisplayTitle(wid title)
    awvSetXAxisLabel(wid "DtoC")
    awvSetYAxisLabel(wid 1 "delay")
    ;;awvSetXLimit(wid '(-30p 30p))
    awvSetXLimit(wid xrange)
    ;;awvSetYLimit(wid 1 '(0p 200p))
    awvSetYLimit(wid 1 yrange)
    awvSetOptionValue("displayAxesBy125" t)
    when(subtitle
    addSubwindowTitle(subtitle))
    t
    ))
     
    Svenn Are Bjerkem, Oct 26, 2005
    #4
  5. Hi Svenn,

    Thanks for your hint and the example code.

    Iam working on it.

    Regards,
    shanthi
     
    shanu.sudalai, Oct 26, 2005
    #5
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.