• 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 SKILL
  3. OCEAN/SKILL scripting

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 142
  • Views 3425
  • 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/SKILL scripting

archive
archive over 18 years ago

Hi!
I want to automatize some simulations.
Let us say i have a circuit A.
Circuit A has a schematic view consisting of transistors and passive elements.
Circuit A has a Verilog-A view.

Do you know if it is possible to specify the  view (schematic or Verilog-A) i want to simulate
in OCEAN/SKILL without changing the netlist manually. Something like this in OCEAN/SKILL would be
cool, isn't it?

1) Circuit A in schematic
2) run
3) output Vout (lets us say a voltage on net called 'out') to a file.
4) Circuit A in Verilog-A
5) run
6) output Vout
7) calculate voltage difference between 3 and 6
8) plot the results

I tried to this for quite sometime but could not figure out how to do it. The roadblock
is that OCEAN gets the netlist from a location (the views are mentioned in the netlist)
and i don't want to get into netlist modification.

I know this can be done with config view but i am just thinking of a better way of doing it.

cheers
Vara


Originally posted in cdnusers.org by vara
  • Cancel
  • archive
    archive over 18 years ago

    Hi Vara,

    Do you already have the config view so that you can use the hierarchy editor to switch back and forth when you simulate?

    I think it should be straightforward to use hierarchy editor to create the two different netlists that you would need for the OCEAN sims.  Just copy them to different names other than the default netlist (like netlist_sch and netlist_beh).

    Then, it is very similar to what you proposed.
    1. set the design for netlist_sch in OCEAN ( design("/userX/.../spectre/config/netlist/netlist_sch") and also set the results directory ( resultsDir("("/userX/.../spectre/results_sch/")
    2. run()
    3. set the design for netlist_beh in OCEAN ( design("/userX/.../spectre/config/netlist/netlist_beh") and also set the results directory ( resultsDir("("/userX/.../spectre/results_beh/")
    4. run()

    So now you have two different results directories that you can query using the openResults command in OCEAN and process & manipulate all the saved data any which way you please.

    Hope this isn't too brief an explanation! :-)

    -SGG_RFIC


    Originally posted in cdnusers.org by SGG_RFIC
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Hi Vara,

    I agree with SGG_RFIC, to use the config view is the simpliest way to do it.
    However I guess you know that too.

    Have you tried, changing the environment option "switchViewList"?
    envOption( 'switchViewList '( "schematic" "veriloga" )  ; netlist priority is schematic view
    or
    envOption( 'switchViewList '( "veriloga" "schematic" )  ; netlist priority is veriloga view

    I have used it and work in socket simulation ( spectreS ), have not tried it on other simulator.
    1. set simulator, for me its spectreS
    2. set design, design( "MYLIB" "MYCELL" "schematic" "r" )
    3. set other common environment seting such as analysis, desVar, temp, includeFile, etc.
    4. set resultDir, to separate result folder of 2 simulation
    5. set switchViewList, envOption( 'switchViewList '( "schematic" "veriloga" )
    6. create netlist, for me I used createFinalNetlist()
    7. run()
    8. selectResult( 'tran ), if analysis is 'tran,
    9. then store the results on a variable, resultSchem = getData( "out" )
    10. set resultDir, new directory
    11. set switchViewList, envOption( 'switchViewList '( "veriloga" "schematic" )
    12. repeat 6 to 9, store the results to a new variable, resultVloga = getData( "out" )
    13. plot the results,
                plot( resultSchem )
                plot( resultVloga )
                plot( resultSchem-resultVloga )

    By the way, load your script in a icfb CIW, i think it will not run in OCEAN prompt.

    I hope this would help you on what you want to accomplish.

    Regards.
    Gilbert


    Originally posted in cdnusers.org by gilbertd3
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Hi Gilbert,
    Thanks for the message. It was useful but i could not manage to shift views successfully.
    Instead, this information was very useful in what i wanted to do.

    http://sourcelink.cadence.com/en/search/DisplayHtmlDoc.jhtml;jsessionidsl=U4MLH54H1GWETLA0BEBCFEQ?param1=http://sourcelink.cadence.com/docs/db/kdb/2007/May/11336018.html?param2=null?param3=Solutions?param4=11336018?param5=/software/cadence/sldocs/db/kdb/2007/May/11336018.html@en_col?param7=How%20to%20change%20binding%20in%20%3Cb%3Econfig%3C/b%3E%20%3Cb%3Eview%3C/b%3E%20using%20%3Cb%3ESkill%3C/b%3E%20commands?

    Vara


    Originally posted in cdnusers.org by vara
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • archive
    archive over 17 years ago

    I try to access all voltages with use of getData, but it seems really slow, when having a 3906 outputs it will take about 24 seconds to access the voltages, is there a faster way?

    [code] mySimTableTable = makeTable( "mySimData" nil ) selectResults( simtype ) mySweepValues = sweepValues() myCount = 0.0 myTotal = length( mySweepValues ) myOutputs = outputs( ?type "V") mySimTableTable = makeTable( "mySimData" nil ) foreach( element_1 mySweepValues myCount++ printf( " \n - Reading savepoint %.1f %s\n" 100.0*myCount/myTotal "%" ) selectResults( simtype element_1 ) startTime = getCurrentTime() foreach( element_2 myOutputs myval = value( getData(element_2) ) myStepSimTable[ element_2] = myval ) endTime = getCurrentTime() printf( " Finished in : %10d (seconds)\n" compareTime( endTime startTime ) ) ) mySimTableTable[ element_1 ] = myStepSimTable [/code]


    Originally posted in cdnusers.org by roelof.heddema
    • 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