• 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. passing the useterms=name option to spectre trough an ocean...

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 144
  • Views 4634
  • 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

passing the useterms=name option to spectre trough an ocean script

ChristophHoehn
ChristophHoehn over 4 years ago

Hi all,

I have the following problem. I want to run my simulations via an ocean script and want to read some currents for some subcircuits out of the psf file later. This all works in principle. The only problem I have is that the currents of subcircuits are stored by pin order rather than pin name by default. I know that I need to change the save option "useterms=name" to get the wanted result. However the ocean function: saveOptions() does not support the 'useterms option. What to do now?

Thanks for your help 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    Because this is on the ADE forms anywhere, you have to add this spectre option via the "additional args" field on the Simulator->Options->Analog form, so that corresponds to adding this in your OCEAN script:

    option( 'additionalArgs "useterms=name")

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ChristophHoehn
    ChristophHoehn over 4 years ago in reply to Andrew Beckett

    Hi Andrew,

    thanks for the help. I added the line of code, but I still get the pin order number for the current. What am I missing here?

    Here the code snippet:

    ...simulator, models, etc. ...

    option('additionalArgs "useterms=name")

    saveOption('save "none 'currents "selected")

    save('i "/Imos/Iopffp1")

    run()

    in the results browser I find:

    current: "Imos:4"

    Can you give me a hint here?

    Best Christoph

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ChristophHoehn

    Christophe,

    The useterms=name only really affects when using currents=all or subcktprobelvl for saving subckt currents. If using selected, and having explicit save statements in the netlist, then the currents are saved under the requested name. Here's what 'spectre -h options" says:

    16      useterms=default  Defines whether device/subckt terminal index (M1:1)
                              or name (M1:d) is saved, when using currents or
                              subcktprobelvl options. Doesn't apply to individual
                              save statements, i.e. save M1:d. default ... save
                              device terminal currents with terminal name and
                              subckt terminal currents with terminal index. index
                              ... save both with terminal index. name ... save both
                              with terminal name. Possible values are default, name
                              and index.

    So check if you have:

    save lmos:4

    in the input.scs.

    If so, you can alter that by changing the spectre simulation information in the CDF for this component. The termMapping will map the symbol terminal name to the model terminal name - and it's probably mapping to :1, :2, ... :4. You can change that to :lopffp1 (for example). 

    If that doesn't help, you may need to contact customer support.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ChristophHoehn
    ChristophHoehn over 4 years ago in reply to Andrew Beckett

    Hi Andrew,

    I created a file with exactly the save statement you proposed and loaded it into the netlist. When spectre executes it reads the file and saves the results.

    BUT...currents are in pin oder notation...no matter what is in the save statement file.

    However when I use subcktprobelvl option in combination with useterms=name it works. I now save some not needed signals but this is Ok for now.

    What I am still looking for and want to ask for is a comprehensive explenation of all those saving options. How does the logic behind them work? Which options have dependencies on each other? Is there a guide that explains this in detail? 

    Best

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to ChristophHoehn

    Hi Christoph,

    I'm not sure which Spectre version you're using, but for me (with SPECTRE19.1) I found that if the instance is a direct instance of a model, then if I save M1:d or M1:1 I get whichever was saved first. If it's an instance of a subckt and I save both by name or by position, I get both in the output.

    I am not sure about a detailed guide about all the peculiarities of the save statement (I agree, it's a bit hard to fathom at times and can seem a little inconsistent). Perhaps you should contact customer support?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Frank Wiedmann
    Frank Wiedmann over 4 years ago in reply to ChristophHoehn

    You could take a look at https://community.cadence.com/cadence_blogs_8/b/cic/posts/spectre-tech-tips-spectre-aps-save-overview---part-1 and https://community.cadence.com/cadence_blogs_8/b/cic/posts/spectre-tech-tips-spectre-aps-save-overview---part-2 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ChristophHoehn
    ChristophHoehn over 4 years ago in reply to Frank Wiedmann

    Thanks Frank I will have a look! 

    And best wishes to all I know down in Munich ;-)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Frank Wiedmann
    Frank Wiedmann over 4 years ago in reply to Frank Wiedmann

    And you could also take a look at the Rapid Adoption Kit "Using Spectre SAVE Effectively" at https://support.cadence.com/apex/articleattachmentportal?id=a1O0V00000910oxUAA which has recently been updated.

    • 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