• 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. Question regarding running parametric simulations using...

Stats

  • Locked Locked
  • Replies 15
  • Subscribers 153
  • Views 20130
  • 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

Question regarding running parametric simulations using Ocean

gurusub
gurusub over 15 years ago

 Hi all,

I have a set of design variables in my schematic. I would like to input multiple data vectors to my schematic and save the output data in Ocean

For example, If P is a set of parameters P={p1,p2,p3,p4} (p1-p4 are the design variables in the schematic). I would create a matrix of data values with different instances of P ie my data matrix would look like 

Q=[-------P1---------

     --------P2---------

    ---------P3--------]

and so on where each Pi contain (p1i, p2i,p3i,p4i). (In other words I want to use the analogus of paramset command in Spectre for ocean). I would like to simulate my circuit for these values in Q and make some measurements using Calculator function and finally store the output data in the text file. Can somebody please go through the steps in accomplishing the same?

 

Thanks,

 

Guru

 

  • Cancel
  • gurusub
    gurusub over 15 years ago

     Hi Andrew,

    I have one quick question. When I use the ocnPrint it prints out unwanted text into the file which I don't need. I would prefer using fprintf instead of OcnPrint. Suppose I am running a parametric sim on SP parameters and I would like to record all the S11 values and its corresponding frequency values into a text file how would I do that? The problem here is that I am not aware of the data structure of the S11. Is it stored as a list?. Is there a easy way of converting a list into an array?. I am very comfortable operating on array than on lists.

    Thanks,

     

    Guru

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • gurusub
    gurusub over 15 years ago

     Thanks Andrew. You are simply awesome!!. Thanks for all the help.

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

    Hi Guru,

    Imagine you had a file "paramdata" containing the following:

    6e-13   8e-13   1.2e-12 1.5e-12
    20      40      60      80
    1.2     1.1     1.3     1.1

    Then in your OCEAN script you could do:

    dataPort=infile("paramdata")
    data=nil
    while(row=lineread(dataPort)
      ; use tconc to efficiently build the list in the same order as the file
      when(row!=t data=tconc(data row))
    )
    ; because it was a tconc, need to use car to convert to a normal list
    data=car(data)

    Then you can do:

    paramAnalysis("CAP" ?values car(data) ?sweepType 'paramset
      paramAnalysis("temp" ?values cadr(data) ?sweepType 'paramset
          paramAnalysis("VDD" ?values caddr(data) ?sweepType 'paramset
    )))
    paramRun()

    Rather than using car, cadr, etc you could always use nthelem(1 data), nthelem(2 data) etc to pick off "rows" in the list. Essentially the variable data would contain a list of lists, with each sub-list representing a row in the data file.

    Hope that helps,

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • gurusub
    gurusub over 15 years ago

     Thanks Andrew. It worked. I would like to read my vectors in Q from an input file. Something like one file for each element in Q. How do I read files using Ocean.

    Thanks,

    Guru

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

    Hi Guru,

    You can do this with OCEAN quite easily, as the paramAnalysis function supports paramset:

    paramAnalysis("CAP" ?values '(6e-13 8e-13 1.2e-12 1.5e-12 ) ?sweepType 'paramset
      paramAnalysis("temp" ?values '(20 40 60 80 ) ?sweepType 'paramset
    ))
    paramRun()

    You need to define a set of nested paramAnalysis calls, with a list of values, with sweepType set to 'paramset as shown. The list has to be the same length for each paramAnalysis, but then it will do (in the above case) 4 runs.

    Then when you access the results after the simulation, you will get waveforms which are a 4-member family - you can then do your calculations as normal in the calculator, and anything that you calculate which would result in a scalar for a single run, will end up as points versus the swept variables. For example, if I do ocnPrint(ymax(v("/out" ?result 'tran))) you get this:


    # Set No. 1

    (CAP = 600f)
    temp              ymax((v "/out" ?resultsDir "/users/ME/simulation/ampTest/spectre/schematic" ?result "tran"))
    20                  149.795m       

    # Set No. 2
    (CAP = 800f)
    temp              ymax((v "/out" ?resultsDir "/users/ME/simulation/ampTest/spectre/schematic" ?result "tran"))
    40                  146.225m       

    # Set No. 3
    (CAP = 1.2p)
    temp              ymax((v "/out" ?resultsDir "/users/ME/simulation/ampTest/spectre/schematic" ?result "tran"))
    60                  140.35m        

    # Set No. 4
    (CAP = 1.5p)
    temp              ymax((v "/out" ?resultsDir "/users/ME/simulation/ampTest/spectre/schematic" ?result "tran"))
    80                  133.77m        

    Regards,

    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