• 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. design variables - parameters

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 125
  • Views 9714
  • 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

design variables - parameters

nicola91it
nicola91it over 7 years ago

Hi to everybody,

I am using Cadence IC.6.1, and was trying to understand the difference in terms of utility between design variables and parameters (iPar, pPar). I already know that we set the design variables in ADEL, and they are global, so for example if I put the length of all transistors in every subcell in a schematic equal to L, all will have this value. The function iPar() is used to make a CDF depedent on another CDF on the same instance, while pPar() can be used for one cell, and eventually the CDF parameters set with pPar() will appear near the symbol that I instantiate in my top-level schematic.

Now, I was trying to understand the advantages of these functions compared to each other: let's suppose we have two cascaded inverters, each corresponding to a symbol that I have in my top level schematic. Both have all transistors with W/L=2, and the second inverter has all transistors with a double size than the first one. Now, this can be done:

- with one design variable L, then directly setting in the properties of each transistors the width as a product of L and the respective numbers

- with one design variable L, setting the width of each transistor equal to iPar("l") multiplied by the respective numbers

- with one design variable L, setting the width of each transistor equal to pPar() in the properties of the cellviews

If I want to perform a parametric analysis sweeping L, I don't see any advantage in using iPar() and pPar(), neither if I also want to eventually sweep W. Could you maybe better explain in which situation (or an example)  it is advantageous to use them? Thank you,

Nicola

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    Hi Nicola,

    I have always proposed the use of iPar and pPar when you want to describe the relationship between parameters as an important part of the design intent. The benefit then is that you can have an instance of your design under test (either in the test bench, or in the real design) and pass in the parameters you need, with no reference to any global variables. iPar tends to be used less frequently than pPar (in designs mostly used in leaf devices). So for example, if I have a common width that is used in a  current mirror, I might have defined that using pPar("wnmir") or something like that - and used it on all the transistors in the current mirror. Then I can choose when I instantiate the device to change all of the widths at once, but keep the current mirror ratios correct.

    In terms of doing the sweeps however, it really doesn't matter too much.

    Another approach  you can take is to use the "parameters" in ADE XL/Explorer/Assembler; this means you can then keep the design unedited, but define the relationships between the parameters on each device (e.g. matched parameters and so on) and you can sweep them without having to actually edit the schematic.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 7 years ago

    Hi Nicola,

    I have always proposed the use of iPar and pPar when you want to describe the relationship between parameters as an important part of the design intent. The benefit then is that you can have an instance of your design under test (either in the test bench, or in the real design) and pass in the parameters you need, with no reference to any global variables. iPar tends to be used less frequently than pPar (in designs mostly used in leaf devices). So for example, if I have a common width that is used in a  current mirror, I might have defined that using pPar("wnmir") or something like that - and used it on all the transistors in the current mirror. Then I can choose when I instantiate the device to change all of the widths at once, but keep the current mirror ratios correct.

    In terms of doing the sweeps however, it really doesn't matter too much.

    Another approach  you can take is to use the "parameters" in ADE XL/Explorer/Assembler; this means you can then keep the design unedited, but define the relationships between the parameters on each device (e.g. matched parameters and so on) and you can sweep them without having to actually edit the schematic.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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