• 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. Assembler: possible to re-evaluate only results yielding...

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 125
  • Views 3506
  • 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

Assembler: possible to re-evaluate only results yielding "eval err" right after simulation?

dontpanic
dontpanic over 3 years ago

Hi! Is it possible to somehow make Assembler re-evaluate only the results that yield "eval err" right after simulation?

Context: I have a testbench that calculates several expressions, all of which evaluate correctly right after simulation, except for a couple, which however evaluate correctly after pressing the "Re-calculate results" button in "Full recalculation" mode (the "Incremental recalculation" mode has no effect). Unfortunately, this re-calculation mode becomes impractical when the number of results and points is too high (e.g. 4h to re-evaluate  a 400-point sweep, which is way more than the actual simulation itself takes!).

In this particular case, all the outputs that yield "eval err" right after simulation call a skill procedure which I load from my .cdsinit, but for some reason Assembler "doesn't know" during its initial results evaluation. For example, these are the errors I get in the exprOutputs.log for each of these outputs that call the "calibrated_reconstruction()" procedure:

\e *Error* ("eval" 0 t nil ("*Error* eval: undefined function" calibrated_reconstruction))
\e
\e
\o [2022-05-25 04:25:16.473 +0200] [error] - point:'1' test:'config_misc_minimal'
\o     Expression:'car((calibrated_reconstruction VT("/sADC_Dscaled") (vOUTdiff / VAR("TB__vREFdiff")) VAR("MEAS__TRAN__TstartSED") VAR("MEAS__TRAN__TstopSED") VAR("TB__CLOCK__Tperiod") VAR("SIM__TRAN__Npoints") 10.0 0.01 VAR("TB__REC__Niterations") 1 VAR("TB__REC__FlagVerbose")))'
\o     because of the following error(s)
\o     *Error* eval: undefined function [Attributes] {"point": 1, "testname": "config_misc_minimal", "?test": "config_misc_minimal", "?expression": "vOUTdiff__at_SED__ENOB"}

...alternatively, would there be a way to somehow "register" my procedure to make Assembler "know it" during its initial results evaluation?

Thanks in advance for any help!

KR, Jorge.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 3 years ago

    Hi Jorge,

    I can think of a SKILL way of forcing problematic expressions to appear changed so that incremental re-evaluation handles this (it's not ideal though because the approach I had in mind would mean that a given output name would re-evaluate all even if it only failed in some corners).

    Probably the best thing to do here is to solve your underlying problem, which is (most likely) due to using LSCS in more recent versions. For that, the expressions are evaluated in a separate, more lightweight process, and any custom functions need to be loaded from a file call .vdsinit rather than .cdsinit. The idea is that this doesn't attempt to load the full customisation for Virtuoso but keeps it to the bare minimum. Try loading your function from a .vdsinit and see if that solves the real problem of it not evaluating during the run.

    I'm pretty sure this is it, because you refer to the exprOutputs.log which only gets created with the newer LSCS flow.

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • dontpanic
    dontpanic over 3 years ago in reply to Andrew Beckett

    Hi Andrew, sorry for my late reply! As you proposed, adding the function definition in a .vdsinit file solved the problem. Thanks so much for your help!

    Cheers,

    Jorge

    • 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