• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. ocean script - corner list

Stats

  • Locked Locked
  • Replies 10
  • Subscribers 126
  • Views 5379
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ocean script - corner list

jugemu1234
jugemu1234 over 15 years ago

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.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    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.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • aplumb
    aplumb over 15 years ago
    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.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • aplumb
    aplumb over 15 years ago
    Sorry, wrong thread. A.
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • surreyian
    surreyian over 13 years ago

     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'.

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    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

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • surreyian
    surreyian over 13 years ago

     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?

     

     

     

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • surreyian
    surreyian over 13 years ago

     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
    Return to the top of the page

    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:

     

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    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.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • surreyian
    surreyian over 13 years ago

    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? 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 13 years ago

    How about:

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

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information