• 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. Parameters in hierarchical schematics

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 125
  • Views 17259
  • 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

Parameters in hierarchical schematics

pepijndevos
pepijndevos over 5 years ago

Hello,

I am making a hierarchical schematic, where at the lowest layer I have an inverter, with the multiplier set to pPar("M") so I can scale the gm of the inverter. From 6 of these inverters, I made a differential inverter cell, where in the property editor I have set M=pPar("multi"), just to differentiate the names in the error messages. Then with these inverters I made test benches where I just set these parameters to a constant.

The inverter testbench works like a charm, no problem, but I can't get the differential inverter test bench to work at all. First I am getting the following error:

ERROR (SFE-1997): "input.scs" 85: I0.I2: parameter `M': Cannot run the simulation because an unknown parameter `multi' has been specified in expression `pPar("multi")'. Correct the expression and rerun the simulation.
To debug this issue, I went into the differential inverter, and changed all inverter M to a constant, then I added a capacitor with C=pPar("multi")/1e12. This works like a charm! So the differential inverter can parse the multi parameter, and the inverter can accept M parameters, but OH BOY if you put the multi parameter in the M parameter. It gets weirder. If I now add back M=pPar("multi") to the inverter cells, it gives me the following error:
ERROR (SFE-1997): "input.scs" 86: I0.I2: parameter `M': Function `pPar' is not defined. Update the netlist to define the function.
EXCUSE ME?? I have no idea what's going on. Yesterday it worked for a while, after some arbitrary fiddling with the CDF editor. But this morning I came back and it's broken again. I have absolutely no clue what sequence of events makes it go from "multi does not exist" to "pPar does not exist" to "everything is fine" and back to step 1. Help?
  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    I suspect  you have not set the parameter where the pPar() expression is being used correctly. So this is probably the "M" parameter (not sure in which cell, but you should check each place you've created a CDF parameter) - you would want it to have parseAsCEL=yes and parseAsNumber=yes. Make sure that when editing the CDF (via Tools->CDF->Edit) that you change the Base CDF and not the Effective (effective is only changed in memory, and not saved to disk, and so will be lost when you quit Virtuoso).

    The pPar() should not end up in the Spectre netlist - the fact that it is suggests that the Spectre netlister does not see the expression as something it needs to handle and just blindly passes it on to the simulator. That's why parseAsCEL is important.

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • pepijndevos
    pepijndevos over 5 years ago in reply to Andrew Beckett

    THANK YOU! I had tried a lot of random permutations of the steps you describe, but must have had Effective selected when changing CEL on one of the cells yesterday. To be honest I'm not sure what CEL does, but I'm glad it works.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • pepijndevos
    pepijndevos over 5 years ago in reply to Andrew Beckett

    THANK YOU! I had tried a lot of random permutations of the steps you describe, but must have had Effective selected when changing CEL on one of the cells yesterday. To be honest I'm not sure what CEL does, but I'm glad it works.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to pepijndevos

    "CEL" is the CDF Expression Language (a superset of AEL, the Analog Expression Language - it extends it to add pPar and iPar). If you don't have this enabled, it assumes it is a literal value and doesn't need any interpretation/reformatting during netlisting.

    Anyway, glad that solved it!

    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