• 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. Veto variable permutations in Maestro

Stats

  • Replies 3
  • Subscribers 125
  • Views 1003
  • Members are here 0

Veto variable permutations in Maestro

CSCNalu
CSCNalu 2 months ago

Hi everyone

Here's a weird one - I'm making a few DACs that are references to other DACs (long story) and want to check their codes but I want to add a veto to some of the combinations because they're kind of pointless.  Is there a way to do this with variables or equations or the set up or something?

Thanks!

  • Sign in to reply
  • Cancel
  • Andrew Beckett
    Andrew Beckett 1 month ago

    I can't immediately think of an obvious way, but perhaps if you can illustrate it with a real example of what you mean - what are the "codes" and where are they used - what are you trying to veto? Then I might be able to suggest something (maybe not, but a real life example tends to get the creative juices flowing!)

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • CSCNalu
    CSCNalu 1 month ago in reply to Andrew Beckett

    Thanks Andrew - so we have DACs that set the high and low limits for a downstream DAC to operate between.  The high and low DACs are 4b (so 0-15) and tied to the same references but there's no pint when the high is below the low and the low is above the high.  We are curious about sweeping the range of the references so the obvious thing is to have high sweep between 0 and 15 and low sweep between 0 and 15 but is there a way to exclude cases when low <= high rather than doing the permutation and eliminating those cases as a corner or something?

    Thanks

    Chris

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 1 month ago in reply to CSCNalu

    Chris, 

    How about this approach? There would be 136 valid combinations (1+2+3+...+16), i.e. 16*(16+1)/2. You can create a simple function and put this in your .cdsinit 

    procedure(CCFgenHighOrLow(index high?)
      let(((high 0) (highThresh 1))
        forall(thresh '(1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136)
          when(thresh<index
            highThresh=thresh
            high++
          )
        )
        cond(
          (high? high)
          (high==0 0)
          (t index-highThresh-1)
        )
      )
    )

    Then create a sweep that sweeps from 1 to 136, and have two dependent variables:

    You can see the sweep combinations on the right, and also in this graph:

    You could then use my bussetp component from this article: How to sweep the value of the bussetp component using binary numbers to drive the bus input to each of your DACs.

    Andrew

    • 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