• 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. Use of DC operating point parameters in calculations and...

Stats

  • Locked Locked
  • Replies 13
  • Subscribers 126
  • Views 24970
  • 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

Use of DC operating point parameters in calculations and plots

archive
archive over 18 years ago

Hi all,

I run a DC sweep simulation on ADE and I would like to plot some of the DC operating point parameters of my schematic (such as vdsat of the transistors, ...)
Moreover, I would like to use these parameters in the calculator in order to make calculations (e.g.: use of vdsat in some calculations).

Does anyone have any idea?

Thks for considering my request.

AXP


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

    This is a very commonly asked question.

    Create a text file (called, say, saveop.scs) with the following contents:

    // include file to save op point data
    save M0:all

    where M0 is the name of the mosfet. See "spectre -h save" for more details on the save statement.

    Then, in Setup->Model Libraries, reference this file (I gave it a .scs suffix so it is interpreted in spectre syntax).

    Run your DC sweep, and then you can access the results via the results browser - or just use an expression such as:

    getData("M0:vdsat" ?result 'dc)

    This will then show vdsat versus the swept parameter.

    The same approach will work if you want to save operating point during a transient - you can always just save the specific op point information by doing:

    save M0:gm M0:vdsat

    for example.

    Best Regards,

    Andrew.


    Originally posted in cdnusers.org by adbeckett
    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • archive
    archive over 18 years ago

    Thks for your helpful reply!!
    Regards

    Axel


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

    A further question...
    the save statement used in the spectre file, is that a spectreMDL syntax?
    Where can I find further information on these kind of functions I can use within spectre files?

    Another question:
    If I want to create a new symbol whose model is directly a spectre file, what are the steps I have to follow in order to get that model working? I have looked in the analogLib library to get more feeling and examples.However if I look in this library I cannot find any link to a scs file whereas they all link to a spectre analog component.

    Thks in adv,
    Regards,
    Axel


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

    An addition to preceeding message:

    what do I have to write in order to get the dc operating point from an instance that is inside a subcircuit.
    I tried to write: save subcktname.M0:all and save subcktname/M0:all as well
    but it didn't work.

    Any suggestion?


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

    It's not in spectreMDL syntax - it's just straight spectre syntax. See "spectre -h save" for more details (as I mentioned before). It's also covered in the spectre documentation in cdsdoc/cdnshelp (depending on the version of MMSIM you're using).

    For hierarchy, you need to use netlist names, and spectre's hierarchy delimiter. So if the transistor is called "M5" and is in an instance called I2, you'd do:

    save I2.M5:all

    Note that if M5 is modelled using a (non-inline) subckt model, you would need the name of the instance within the subckt model. The simplest way of finding out (rather than diving through all the model files) is to do a single DC operating point, and then look at the operating point results in the results browser, and see what the instance name there is called.

    If you want to model something with a subckt model, you can reference that .scs file from the Setup->Model Libraries form in ADE. Then for the component, you can set up the CDF to have the following in the spectre simInfo:

    componentName: theNameOfTheSubckt
    termOrder: the order of the terminals in the subckt model, using the names on the symbol
    instParameters: any parameters you need to pass (need corresponding CDF parameters).

    You'll also need a stopping view, to tell the netlister to stop expanding the hierarchy at that point. The easiest way to do this is to copy the symbol view to a view called "spectre".

    Note there are numerous sourcelink.cadence.com solutions on how to do the above, so it's worth looking there if you can.

    Regards,

    Andrew.


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

    Hallo,

    I wanted to do the same thing.
    I tried this technique what you have recommended, the result is:

    "Warning from spectre during initial setup.
    subcktInst:all is not supported.
    Ignoring invalid item `MN0:all' in save statement."

    :( it does not work

    I have check the help and I have tried also:
    save MN0:oppoint

    The result:
    "Warning from spectre during initial setup.
    subcktInst:all is not supported.
    Ignoring invalid item `MN0:all' in save statement."

    :( it does not work

    What can be the problem? :(

    br

    Peter




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

    Did you look at my reply before yours? You must have a subckt model, and so you need to give the hierarchical path (with "." as delimiter) to the actual transistor device.

    Also, if you use a recent spectre version (e.g. MMSIM621 or MMSIM70) you can save using wildcards (see "spectre -h save" for more details) which makes it easier still.

    Regards,

    Andrew.


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

    Posted By adbeckett on 7/04/2008 8:41 AM
    Did you look at my reply before yours? You must have a subckt model, and so you need to give the hierarchical path (with "." as delimiter) to the actual transistor device.

    Also, if you use a recent spectre version (e.g. MMSIM621 or MMSIM70) you can save using wildcards (see "spectre -h save" for more details) which makes it easier still.

    Regards,

    Andrew.
    Hi,

    I do not use any subcircuit, actually I have tried to simulate a very simple circuit: 1 transistor and 2 voltage sources.
    Does this oppoint depend on the transistor modell?

    I am using 5.1.41 at the moment... no wildcards :(

    br

    Peter


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

    Posted By pdrabos on 7/04/2008 10:05 AM
    Posted By adbeckett on 7/04/2008 8:41 AM
    Did you look at my reply before yours? You must have a subckt model, and so you need to give the hierarchical path (with "." as delimiter) to the actual transistor device.

    Also, if you use a recent spectre version (e.g. MMSIM621 or MMSIM70) you can save using wildcards (see "spectre -h save" for more details) which makes it easier still.

    Regards,

    Andrew.
    Hi,

    I do not use any subcircuit, actually I have tried to simulate a very simple circuit: 1 transistor and 2 voltage sources.
    Does this oppoint depend on the transistor modell?

    I am using 5.1.41 at the moment... no wildcards :(

    br

    Peter

    Hi,

    So, I have used your method to find how the dc operating values are saved (MN0.m1 in my case) and now it works :).
    I had to restart ADE, because it did not want to recognize the modification in the scs file. But finally it works.

    Thanks a lot for your valuable help!

    br

    Peter


    Originally posted in cdnusers.org by pdrabos
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • TjaartOpperman
    TjaartOpperman over 15 years ago
    I'm using the OP() command in Ocean to obtain the operating point parameters. I want to use this command in a for loop (to check every device), but for that I'll need a list of names of all the instances in my netlist. Is there somehow that I can generate such a list? The IC5 version I'm using does unfortunately not support the DeviceCheck family of functions. I'll also need to distinguish between device types. Is there a way for me to find the device type, suppose I already have the instance name?
    • 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