Home > Community > Forums > Custom IC SKILL > OCEAN/SKILL scripting

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/SKILL scripting 

Last post Wed, Jul 25 2007 10:18 AM by archive. 4 replies.
Started by archive 25 Jul 2007 10:18 AM. Topic has 4 replies and 2550 views
Page 1 of 1 (5 items)
Sort Posts:
  • Wed, Jul 25 2007 10:18 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    OCEAN/SKILL scripting Reply

    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
    • Post Points: 0
  • Thu, Jul 26 2007 11:41 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: OCEAN/SKILL scripting Reply

    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
    • Post Points: 0
  • Thu, Jul 26 2007 6:56 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: OCEAN/SKILL scripting Reply

    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
    • Post Points: 0
  • Tue, Aug 14 2007 7:20 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: OCEAN/SKILL scripting Reply

    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
    • Post Points: 0
  • Tue, May 27 2008 11:58 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: OCEAN/SKILL scripting Reply

    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
    • Post Points: 0
Page 1 of 1 (5 items)
Sort Posts:
Started by archive at 25 Jul 2007 10:18 AM. Topic has 4 replies.