Home
  • Products
  • Solutions
  • Support
  • Company

This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  • Products
  • Solutions
  • Support
  • Company
Community Mixed-Signal Design ADE design variable:: evaluate desVar expression/equation...

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 64
  • Views 2521
  • 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

ADE design variable:: evaluate desVar expression/equation to scalar before simulation, in order for the netlist to contain a scalar value instead of an equation.

frankp
frankp over 1 year ago

(RE-posting with normal font size

Apologies fro the duplicate post.)

Hello all,

I am attempting to run a Assembler simulation where I sweep a design_variable_1 (lets call this design variable as "dv1" for the sake of simplicity). In my Assembler (aka maestro view) I have a second design variable "dV2" that is dependent on dv1 (in the 'Data' pane). In this case it is simply dv2=dv1/2.

The dV1 sweep is being done in the C0 corner where dV1 is set to 3 separate values (4 6 8). As such, I end up with 3 simulation directories 1/ 2/ and 3/ with their own separate netlists (I checked, netlist files are not linked).

Unfortunately, this dv2=dv1/2 equation gets propagated in each of the 3 netlist files. This normally does not cause a problem. However, in this case dV2 is passed as parameter to a MOS instance whose callbacks fail when it's parameters are equations . 

Not being the author of the callbacks and the MOS instance being defined in the PDK - I cannot find a workaround that either fixes the CBs or modifies the CDF parameters of said MOS cell.

... Ok, now getting to the question:

Is there a way (cadence envvar or other) to force the scalar evaluation of dV2 pre-netlisting in order for the netlist to receive dVs that are solely numbers ?

I think this would solve the callbacks from failing.

Even if it would not solve the CBs from failing for this particular simulation, I always wished that the dV can get passed to the netlist files are scalars. It would facilitate the reading of the netlist parameter section by a human, specifically when the dV equations are complicated.

I am using Virtuoso Studio IC23.1-64b.ISR1.30

Thank you

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago

    I deleted your original post to avoid having this posted twice in different forums (which is against the guidelines).

    Anyway, three points:

    1. You can force the expression to be evaluated before netlisting by ensuring it includes a SKILL function which isn't handled natively by spectre (see "spectre -h expressions" for what functions Spectre supports). I changed to (say) dV1/2+truncate(0) or even eval(dV1/2) - maybe the second is clearer - and this achieves that goal.
    2. However, given that the callbacks are not invoked when you have a design variable being swept on an instance, I'm not convinced this is really your problem. The workaround above still will leave the instances set to a design variable value and will not expand the value on the instance (that's not really feasible, especially if you have hierarchy in the design and are using pPars() etc - this is covered in my article The dangers of CDF callbacks)
    3. One other approach might be to use the ADE Parameters section (available in Explorer/Assembler and also ADE XL). In this case you can parameterise instances (and you could "ratio match" the two instances if you need one parameter to half of the other). With parameters the callbacks are invoked because it knows which specific instance parameters in particular cellViews are being modified.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • frankp
    frankp over 1 year ago in reply to Andrew Beckett

    Thank you Andrew.

    You are right  - despite the netlist issue of design variable being now scalars (the eval(dv1/2) did the trick), the callbacks are not being invoked.do

    Question: Using the ADE Parameters section, do I need to set all the parameters on all the instances or only on a few - end goal being all the instances had their CBs invoked ?

    I confess to never having used Parameters, so I am still fiddling around with them to try get the CBs invoked on a few/all instances.

    Frank

    Thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to frankp

    Frank,

    frankp said:
    end goal being all the instances had their CBs invoked

    Why would you need the callbacks invoked on all instances? That seems a strange requirement.

    Just parameterise the parameters that need to be parameterised and that should be sufficient. 

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • frankp
    frankp over 1 year ago in reply to Andrew Beckett

    The reason is because currently there are MANY instances that do not get their CB triggered, bevasue one of their field is populated with a desVar. Wanted to see if there was lazy way to deal with this predicament.

    Just got access back to cadence - I have yet to succeed building a correct netlist with the 'paramaters' section when I sweep a desVar. Probably need to simplify my testcase first - will get back to this post with my results of simply parametrizing the needed instances then.

    But is it possible to trigger all the CBs ? asking out of curiosity for now.

    Thanks for your feedback Andrew. As always, much appreciated.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to frankp

    If the the field is populated with a design variable and the callback doesn't work with design variables, calling the callbacks is not going to help. Calling the callbacks when you have used the parameterisation is fine, because it should call it with a number in that case.

    If you need to call all the callbacks (presumably you'd need to remove any design variables if the PDK doesn't support them), then you can do that using the SKILL code in my article How to call CDF callbacks procedurally from SKILL to update CDF parameters?

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • frankp
    frankp over 1 year ago in reply to Andrew Beckett

    As I always, I appreciate the help Andrew.

    (I had a training week last week so I my attention was elsewhere).

    Returning back to this issue now (among others).

    Thank you.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • frankp
    frankp over 1 year ago in reply to frankp

    Parametrization did the trick!

    And you were right, calling  the callbacks when they do not work with design variables does not fix the problem.

    Thank you 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