• 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. How can I use a schematic parameter (such as R1/r = 10K...

Stats

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

How can I use a schematic parameter (such as R1/r = 10K) in an Explorer calculation?

Bret Howe
Bret Howe over 2 years ago

Say I have a resistor R1 in a schematic where r=10K. I want to use this value of r to calculate another value. I could make r=Rval and set this as a variable in Explorer but then I have to change the schematic whenever I want to run the simulation and then change the r=Rval back to 10K when done.

I could just use 10K in my calculations, but then if I want to change this value later, I have to find everywhere I used the value and change it.

Seems like there must be a simple way to do this. I tried making R1/r a parameter in the simulation and this allowed me to sweep the parameter but I could not find a way to use this parameter in a calculation.

  • Cancel
  • ShawnLogan
    ShawnLogan over 2 years ago

    Dear Bret,

    Bret Howe said:
    Seems like there must be a simple way to do this. I tried making R1/r a parameter in the simulation and this allowed me to sweep the parameter but I could not find a way to use this parameter in a calculation.

    If I properly understand your question (apologize if I am not!), and r is your design variable, to use the value of R1/r in a Calculator expression, the syntax should be:

    R1/VAR("r")

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to ShawnLogan

    Bret was talking (I believe) about using the parameterisation capability to set up a sweep rather than using a design or global variable, and so the VAR() approach won't work, unfortunately. 

    There isn't (as far as I know) a way of retrieving the parameter values directly from ADE - there's an enhancement request, CCR 1532207, asking for this. If you've saved the instance information on the Outputs->Save All form, you can retrieve the value of an instance parameter from the simulation results using:

        pv("/Iamp/M3" "l" ?result "instance")
    

    That isn't necessarily the same as the value you entered though, because this is after callbacks have been called - and assumes you can figure out the relationship.

    The alternative is to put a variable name as the value of the parameter in the Variables and Parameters assistant, and then sweep the variable. Then you can use VAR() as Shawn suggested.

    Hope that helps,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Bret Howe
    Bret Howe over 2 years ago in reply to Andrew Beckett

    Thanks Andrew, I will give this a try. Sounds like it will probably get me close enough for what I want to calculate. I'm surprised this functionality is not available. Seems like there would be a PAR similar to VAR that could use a parameter instead of a variable.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to Bret Howe

    Bret,

    The challenge is that it would need to store this data in a result database that is readily retrievable. For variables, these are in a database already for ADE because Spectre needs the variable as a parameter in the netlist; that's not quite the case with the parameterisation flow - and as I said, the parameters that are stored may not be identical to the input parameters. Yes, it would be useful, but it seems not too many people have asked for it so far.

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Bret Howe
    Bret Howe over 2 years ago in reply to Andrew Beckett
    Andrew Beckett said:
    If you've saved the instance information on the Outputs->Save All form

    I haven't found how to do this on the "Save All" form. I don't see a "Save Instance Information". Would this be added to the "save circuit information analysis" table? 

    Once I have it saved, I can use pv("/I0/R0" "r" ?result "instance") in an expression?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Bret Howe
    Bret Howe over 2 years ago

    I was able to use calcVal function to pretty much do what I needed. I use calcVal to get the resistor calculated value for nominal case and then use that value in all the other corners.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to Bret Howe

    It's the element/inst row in this table - needs to be checked to be saved:

    Depending on whether the resistor is directly a resistor or a subcircuit model, it may be something beneath that. The best thing to do is to look in the results browser and and find the relevant component/parameter (you should be able to look in the instance database in the results).

    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