• 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. creating output expression while doing parametric sweep

Stats

  • Replies 1
  • Subscribers 126
  • Views 1243
  • Members are here 0

creating output expression while doing parametric sweep

Svilen64
Svilen64 3 months ago

Hi,

I am running a parametric sweep in Cadence Virtuoso and I want to create an expression that takes the difference of a voltage for the last parameter value and the first parameter value. How can I do that?
I want to create expression for that so that when the simulation is done that expression is calculated and gives me the difference. But then the question is can the simulator evaluate that expression without me going to the calculator. What I mean is that when it simulated the 1st parameter value spectre would not have yet the results for the last parameter value and then what will be the result of that expression?
Is it at all possible? And I would also like to do that for parametric sweep with Monte-Carlo.

I would rather not go do Ocean. I think this will complicate things too much.

Thanks
Svilen

  • Sign in to reply
  • Cancel
  • Volker T
    Volker T 3 months ago

    Hi,

    assuming your parameter sweeps from minimum to maximum value, how about using leafValue() for this?

    I did not check if this really works, but you could try.

    Let VT("/signal") be the "voltage" you are talking about and "param" be your sweep parameter (actually a design variable) that you sweep from value a to value b.

    The first voltage of your sweep then is

    leafValue( VT("/signal") "param" a)

    the last voltage is

    leafValue( VT("/signal") "param" b)

    so the difference is

    leafValue( VT("/signal") "param" b)-leafValue( VT("/signal") "param" a)

    Here, you get a difference waveform, but that should work with a scalar value as well (like taken by "value(VT("/signal") timepoint)").

    For that to not evaluate for each point, you need to select the right EvalType (e.g. "sweeps" or "all")  or ignore the result for all values of param but the last one.

    The downside is, you still have to enter "a" and "b" manually into your output expression before starting the simulation.

    If you are interested in only min an max, then I guess

    a = ymin(VAR("param") ?overall t)

    b = ymax(VAR("param") ?overall t)

    can do the job for you:

    leafValue( VT("/signal") "param" ymax(VAR("param") ?overall t))-leafValue( VT("/signal") "param" ymin(VAR("param") ?overall t))

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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