• 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. variable for number of iterated instances

Stats

  • Replies 2
  • Subscribers 132
  • Views 93
  • Members are here 0

variable for number of iterated instances

Volker T
Volker T 1 day ago

I am referring here to post "Can I use a variable for number of iterated instances".

There is now a solution to change the number of instances of an instance array using "Window -> Assistants -> Variables and Parameters. Click on component to iterate. Click on iterInstMultiplier parameter -> Create Parameter Range" in ADE.

This is a great feature, and I wonder if and how one can evaluate "iterInstMultiplier" of the affected instance array in an Output Expression.

Assume I have an array of parallel transistors and I would like to calculate the current through each individual transistor, then one way is to record total current by an iprobe and then divide by "iterInstMultiplier" ascurrently set by parameter.  (This is just a simple example, not the actual problem I am trying to scolve.)

But how to access the value of this parameter?

I found a rather complex work-around:

In CIW, i enter

openResults()

selectResults()

report()

and then I find the alias name "DPAR_1" that represents the parameter I am looking for. Then, using

pv("top-level" "DPAR_1" ?result "designParamVals")

I can finally access its value. However, if there is more than one such parameter, it starts getting complicated.

So, I guess there MUST be a much simpler way to do this directly?

  • Cancel
  • Sign in to reply
Parents
  • Andrew Beckett
    Andrew Beckett 1 day ago

    OK, you can do it like this. 

    1. When you set the iterInstMultiplier, rather than directly setting a sweep of the parameter, set it to (say) ITERMULT
    2. Then define a global variable called ITERMULT to (say) 4:1:10 (sweeping the number of iterated instances indirectly via a variable)
    3. Then you can use VAR("ITERMULT") in your output expressions.

    I have a CCR (3085324) which is already asking for an equivalent of VAR for parameters (e.g. PARAM) but this has not been implemented yet; if that existed, then this intermediate step of using an indirect variable wouldn't be needed (although the PARAM syntax would be more complex as it would need to know lib, cell, view, inst and param name)

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett 1 day ago

    OK, you can do it like this. 

    1. When you set the iterInstMultiplier, rather than directly setting a sweep of the parameter, set it to (say) ITERMULT
    2. Then define a global variable called ITERMULT to (say) 4:1:10 (sweeping the number of iterated instances indirectly via a variable)
    3. Then you can use VAR("ITERMULT") in your output expressions.

    I have a CCR (3085324) which is already asking for an equivalent of VAR for parameters (e.g. PARAM) but this has not been implemented yet; if that existed, then this intermediate step of using an indirect variable wouldn't be needed (although the PARAM syntax would be more complex as it would need to know lib, cell, view, inst and param name)

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Children
  • Volker T
    Volker T 23 hours ago in reply to Andrew Beckett

    Thank you very much, Andrew.

    And yes, something like PARAM(), as an access function similar to VAR(), to get the parameter value used in a simulation run, is exactly what I was looking for. It's great to hear that there already is a CCR for this.

    Regards,

    Volker

    • 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.

© 2026 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information