• 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 SKILL
  3. CDF callbacks and ADE design variables?

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 143
  • Views 13842
  • 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

CDF callbacks and ADE design variables?

berndf
berndf over 15 years ago

Dear all,

I'm looking for satisfactorily method
for the combination of the usage of CDF callbacks
and ADE design variables.

An example:
For a primitive capacitance there are
 the model parameters, area and perim
 the CDF paramters l, w, c, area, perim.
Where two of the three params l, w, c are entry params,
dependent on the users choice. The third
then always depends form the values entered on
the two entered.
Area and perim also depend on the values from w and l.
In the CDF callback, a range check and the calculation
of the dependent values is performed.
 
This works well up to the point if one wants to use
design variables for l, w or c.
At that point you levering range checking and the
calculation of dependencies.

Is there any silver bullet method to address this correctly?
And how would it be implemented in the callback?

Thanks in advance and with best regards,
 Bernd


Not to use CDF callbacks is no solution.
And I knew: SourceLink Solution 11223092 "The Dangers of CDF Callbacks"

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    Hi Bernd,

    What I would do is:

    1. use spectre's "assert" statement to do range checking in the model
    2. Potentially you might be able to use some of the AEL functions (aelSetLineage, and then aelCompile/aelEvaluate) to evaluate the expression in the current hierarchical context. However, that I think is of dubious value because you might not have set the design variable values yet, or may change them later. Or you may have two instances in different hierarchical paths, which actually see different values (due to pPar() type BLOCKED EXPRESSION. So I think this is really a flawed approach
    3. Usually I would just disable any range checking as soon as the expression cannot be evaluated with cdfParseFloatString (say), or even an aelEvaluate which just resolves simple expressions. Fundamentally it is an impossible task for the callback to range check something that it doesn't actually yet know what the value is going to be - only the simulator will see the final value of the expression (what happens if you're doing a sweep of the design variable, for instance?)

    Best Regards,

    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