• 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. Changing ADEXL output Spec depending on a Sweep variabl...

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 143
  • Views 19165
  • 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

Changing ADEXL output Spec depending on a Sweep variable

ayayla
ayayla over 5 years ago

Hi,

Is there a way to create a spec for an output expression in ADEXL depending on a sweep variable? Let's say I want to sweep an input tone for IIP3 measurement and for each input level, I have a different spec. If there is a way to use  "case" statement in spec, that would be great since that seems to be easiest and elegant solution.

Thanks

yayla

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    See How to use a variable in a Spec in ADE Assembler and ADE XL - essentially you put VAR("someVar") as the spec limit.

    Andrew.

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

    Yes Andrew. I am using VAR("") in spec for fixed specs but how can I do sth like below?

    Let's say I have VDD as sweeping variable and checking is PSRR spec for different supply.

    VDD:      Spec:

    1V           >30dB

    0.9V       >27dB

    0.8V       >25dB

    thanks

    yayla

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • ayayla
    ayayla over 5 years ago

    Adding below trouble shooting if anyone else is having a similar issue:

    "How to define output specification based on the design variable value"

    https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1O0V000009MpdwUAC&pageName=ArticleContent

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

    Thanks for posting that reference to an article. I was going to put together a similar approach but didn't have time to experiment and test it - great to know that a colleague had already done so and published an article describing how to do so.

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

    Hi, I am sorry but i do not why I am not able to ask a question by creating a new blog post. It is urgent so I am asking this question here. I extracted a value from the graph using value() function in the calculator. Now, is it possible to use this extracted value for a design variable value? If so, how?

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

    First of all, the forums are not intended for urgent topics, since this is the community helping you out (yes, some of us work for Cadence, but we respond in our spare time) and not as an alternative to property customer support. So urgent things should always go to customer support.

    If you can't post in a new thread, maybe your profile hasn't been completed - see this thread.

    You can use the results of measurements from one test as a variable in another test by using calcVal("outputName" "testName") - you can do that by dragging the output row into the variable definition. It does need to be in a different test, as the variable will influence a subsequent simulation, and not the same simulation. It's not entirely clear whether that's what you were asking.

    Andrew.

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

    Hi again, I actual wanted to use value(Gradient 60) as the value for my m variable and (value(v("/net5" ?result "dc") 60) - 0.06) as the value for my c variable. So, that each time a simulation is run I do not have to change them manually. Is it possible to do so? If so, how?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to Arefinn
    Arefinn said:
    Is it possible to do so? If so, how?

    OK, you didn't mention you were using ADE L either, which was quite an important piece of information. Anyway, I was going to say "no", but there is a way to have a variable update after the simulation based on results (of course, this may mean that each time you press the run button you now get different results, because the results are based on the previous run - which is not always desirable). If that's what you want, you could load the following code in your .cdsinit:

    procedure(CCFupdateDesignVar(var value @optional (session asiGetCurrentSession()))
      let((vars ptr strVal)
        if(numberp(value) then
          vars=asiGetDesignVarList(session)
          strVal=aelSuffixNotation(value)
          ptr=assoc(var vars)
          if(ptr then
            rplaca(cdr(ptr) strVal)
          else
            vars=cons(list(var strVal) vars)
          )
          asiSetDesignVarList(session vars)
        else
          warn("CCFupdateDesignVar cannot update %s because %L not a number" var value)
        )
        value
      )
    )

    Then in the outputs change the two last expressions to:

    CCFupdateDesignVar("m" value(Gradient 60))
    CCFupdateDesignVar("c" (value(v("/net5" ?result "dc") 60) - 0.06))

    The results in the output pane will be whatever the second argument evaluates to, but they will also update the design variable as the results evaluation is done.

    Does that help? BTW, I make no assurances as to how robust this approach is as I only did very limited testing (I checked to make sure it doesn't fail with a parametric sweep, for example, but other than that, I didn't test much. I also didn't check that it would work with ADE Explorer/Assembler - I'm not sure it would).

    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