Home > Community > Forums > Custom IC Design > ocean script - corner list

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

 ocean script - corner list 

Last post Wed, Jun 27 2012 5:10 AM by Andrew Beckett. 10 replies.
Started by jugemu1234 22 Sep 2009 12:09 AM. Topic has 10 replies and 5551 views
Page 1 of 1 (11 items)
Sort Posts:
  • Tue, Sep 22 2009 12:09 AM

    ocean script - corner list Reply

    Hi there,

     When I plan to run several specific corner simulations as in following,

     

    myCorner0='(tt,-40,1.5)

    myCorner1= '(tt,125,1.4)

    myCorner2= '(ff,-40,1.6)

     

    I noticed "foreach" structure is sort of redundant way because obviously not necessary corners will be included much.

    foreach(myMOS '("tt" "ff")

    foreach(myTemp '("-40" "125")

    foreach(myVdd '("1.4" "1.5" "1.6")

    ;;;code here

    )))

     

    So could you anybody suggest me how to construct efficient ocean script code? 

     

    Thanks in advance.

    • Post Points: 20
  • Tue, Sep 22 2009 1:25 AM

    Re: ocean script - corner list Answer Reply

    There's a couple of ways you could achieve this. First with a list of lists:

    foreach(corner '(("tt" -40 1.5) ("tt" 125 1.4) ("ff" -40 1.6))
      myMOS=car(corner)
      myTemp=cadr(corner)
      myVdd=caddr(corner)
      ...
    )

    Or another is to have a foreach with multiple loop variables:

    foreach((myMOS myTemp myVdd) '("tt" "tt" "ff") '(-40 125 -40) '(1.5 1.4 1.6)
      ...
    )

    This will loop over each of the three lists in parallel.

    Best Regards,

    Andrew.

    • Post Points: 35
  • Tue, Sep 22 2009 5:39 AM

    • aplumb
    • Top 75 Contributor
    • Joined on Thu, Jul 17 2008
    • Ottawa, Ontario
    • Posts 80
    • Points 1,230
    Re: ocean script - corner list Reply
    Another options is to use the 'Distributed' simulation infrastructure. Then you can explicitly assign job names to each iteration, plus you can enable suffixing (with a number) so previous runs for the same job name don't get clobbered.

    Andrew.
    • Post Points: 5
  • Tue, Sep 22 2009 5:41 AM

    • aplumb
    • Top 75 Contributor
    • Joined on Thu, Jul 17 2008
    • Ottawa, Ontario
    • Posts 80
    • Points 1,230
    Re: ocean script - corner list Reply
    Sorry, wrong thread. A.
    • Post Points: 5
  • Thu, Jun 21 2012 11:55 PM

    • surreyian
    • Top 500 Contributor
    • Joined on Tue, May 17 2011
    • Posts 19
    • Points 320
    Re: ocean script - corner list Reply

     Hello Andrew,

     What should be included in the corner list? 

    myCors=list("fasthigh" "fastlow" )
    foreach(CornersList myCors
    modelFile(
        '("filepath/typicalmid.scs" "")
    list("/filepath/cornerlist.txt")
    )

    cornerlist.txt is as follows

    CornersVars= list ("process")

    CornersList= list(

    list("fastlow" )

    list("fasthigh")

    )

     

    I get the error message: ERROR: "input.scs" 13: No section found witht name 'fasthigh' defined in file '/filepath/cornerlist.txt'.

     

    • Post Points: 20
  • Fri, Jun 22 2012 6:09 AM

    Re: ocean script - corner list Reply

    Your question doesn't make sense (or at least doesn't contain enough information). I can't really see what you're doing with the list("/filepath/cornerlist.txt") line - that would treat that file as a spectre input file - which clearly it isn't.

    Did you mean to do:

    myCors=list("fasthigh" "fastlow")
    foreach(corner myCors
      modelFile(
        list("/filepath/typicalmod.scs" corner)
      )
      ; etc
      run()
    )

    Andrew

    • Post Points: 20
  • Tue, Jun 26 2012 2:49 AM

    • surreyian
    • Top 500 Contributor
    • Joined on Tue, May 17 2011
    • Posts 19
    • Points 320
    Re: ocean script - corner list Reply

     Hello Andrew,

    I was trying to follow this example.

    http://support.cadence.com/wps/myportal/cos/COSHome/viewsolution/!ut/p/c5/dY1JboMwAEXPwgEim8k2S8AMBokmKFDwBhlEKZMJNEVJTl9ygL6_fPp6gINjUux9J-79IsUECsBRpWqBq8YGtD7chEBGUBKnuQcPwOf7gSr4DzYEJeD47TVNJdAK_KsDmRuziGBdgzECuVy2-ShdQRE2C6aL3VGbXphZPLP66XR6GG6ZHaVTQBt5ShD5pQ6v2Zenbz-lj8V8NsxArKy0INepaKEhUh4Fq4nGvvYkHmP4GJJbdT6Zd62xBjzmr0fWLN-rd7F3f92Z20_tsHWKApJwmVtwG-XLJ7byB81SWQk!/dl3/d3/L2dBISEvZ0FBIS9nQSEh/

    I'm trying to include different process corners and run it using ocean. 

    I tried your example: 

    myCors=list("fasthigh" "fastlow")
    foreach(corner myCors
      modelFile(
        list("/filepath/typicalmid.scs" corner)
      )
      ; etc
      run()
    )

    I got this ERROR: "input.scs" 12: No section found with name `fastlow' defined in file

     Do i need to create a file to keep all the corner file together?

     

     

     

     

    • Post Points: 5
  • Tue, Jun 26 2012 8:27 AM

    • surreyian
    • Top 500 Contributor
    • Joined on Tue, May 17 2011
    • Posts 19
    • Points 320
    Re: ocean script - corner list Reply

     the link doesnt seems to work. 

    I copied the content from the link.

     

    How to run parametric analysis over corners using Ocean in IC5141?


    soldiv { word-wrap: break-word; overflow: hidden; }soldiv p { margin-left: 0px; }.solDiv blockquote { margin-left: 25px; }soldefault { font-size: 12pt; }.solDefault font { font-size: 12pt; }
    Error Message

    Nil

    Problem

    You would like to run a parametric analysis over a corners. Say you have model corners "typtyp", "fastfast" and "slowslow". You would like to run a parametric analysis on all these corners. How to do run this using Ocean script?

    Solution

    You can use the following Ocean script to run a parametric analysis over a set of corners.

     

    ;;; Start of Script

    ocnWaveformTool( 'wavescan )

    simulator( 'spectre )

    design("/home/user/simulation/ampTest/spectre/schematic/netlist/netlist")

    desVar( "vsup"  3.3 )

    myCors = list("typtyp" "fastfast" "slowslow")  ;;; Available corners

     

    foreach(myModelSec myCors

     

    myResultsDir = strcat("/home/user/simulation/ampTest/spectre/schematic/" myModelSec)

    resultsDir(myResultsDir)

    modelFile(

    '("/home/user/dummy.scs" "")

    list("/home/user/mySingle.scs" myModelSec)

      )

     

    analysis('tran ?stop "1u")

    temp( 27 )

    paramAnalysis("temp" ?values '(20 25 30)

    )

    paramRun()

    );;; End of Script

     

     

    The above script runs parametric analysis sweeping the variable "temp" for all the corners specified (typtyp, fastfast and slowslow). A total of 9 simulations will be run for the above example. The simulation output directory (psf) will be created with a unique name for all 9 runs reflecting the corner and sweep value. For this case, an example would be,

     

    /home/user/simulation/ampTest/spectre/schematic/fastfast/temp=25

    Related Solutions
       None

    Document attributes
    Solution ID:11390018
    Created:11/06/2007 03:58:17
    Last Modified:08/07/2011 20:14:59
    Product:Analog IC
    Product Version:5.1.41
    HW Platform:All
    O/S Version:N/A
    SW Release:

     

    • Post Points: 20
  • Tue, Jun 26 2012 8:34 AM

    Re: ocean script - corner list Reply

    This approach will only work if you've got a section called "fastlow" in your model file - you need to check the model file and see what sections it has within the file (you'll see a "library" keyword and within that sections - assuming that the model file actually has sections at all).

    The error message suggests that there's no "fastlow" section in the model file.

    Andrew.

    • Post Points: 20
  • Tue, Jun 26 2012 8:54 AM

    • surreyian
    • Top 500 Contributor
    • Joined on Tue, May 17 2011
    • Posts 19
    • Points 320
    Re: ocean script - corner list Reply

    modelFile(
        '("xxx/typicalmid.scs" "")

    model file path xxx/typicalmid.scs only have typicalmid corner

    fastmid corner is in xxx/fastmid.scs

    slowmid corner is in xxx/slowmid.scs

     I tried using

    modelFile(
        '("xxx" ""))

     Fatal error occured: unable to open file "xxx"

    in my case how should i run corner? 

    • Post Points: 20
  • Wed, Jun 27 2012 5:10 AM

    Re: ocean script - corner list Reply

    How about:

    foreach(corner '("typicalmid" "fastmid" "slowmid")
      modelFile(
        strcat("xxx/" corner ".scs")
      )
      ...
      run()
    )

    Andrew.

    • Post Points: 5
Page 1 of 1 (11 items)
Sort Posts:
Started by jugemu1234 at 22 Sep 2009 12:09 AM. Topic has 10 replies.