• 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. report list with model name devices used in schematic

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 143
  • Views 20132
  • 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

report list with model name devices used in schematic

MauroF
MauroF over 6 years ago

Hi,

I need a skill code to retrieve from schematic the list of used devices with the model name of devices and not only the component name. For example I have a device named nmos4 but when I put it in schematic in the property window I can choose the model to be used for this schematic. I need a list that prints the model of the device used. I have a skill script to have the devices list from schematic but I don't understand how retrieve model name.

Thanks for all suggestion

BR

Mauro

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago

    Hi Mauro,

    Commonly in most PDKs the model name would be in a CDF parameter called model. So you can probably do:

    cv~>instances~>model

    to list all the model parameters (some may be nil because of being pins, or not having a model parameter, but you can start from there). Or if you have an individual instance object, inst~>model should return it.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • MauroF
    MauroF over 6 years ago in reply to Andrew Beckett

    CCSleafCellCount.zip

    Hi Andrew thanks for your quick answer. I'm using the code attached from cadence support web site. Can you help me to understand where put the line you give me. Sorry but I'm not so confident with skill code

    BR

    Mauro

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to MauroF

    Hi Mauro,

    Despite having written that code (9 years ago), it's not a trivial task to change it to truly report the models. If the models are fixed for each device (i.e. you can't change them on a per-instance basis for the same component), then changing the bit that is in CCFleafCellCount.il  in the function CCFleafCellCount where there's a comment  Report each stopping cell  to this:

        ;--------------------------------------------------------------------
        ; Report each stopping cell, and sum up the total number of
        ; stopping cells
        ;--------------------------------------------------------------------
        (setq stoppingCellTable (getq obj stoppingCellTable))
        (let (cdf model)
          (foreach stoppingCell 
                   (sort (getq stoppingCellTable ?) 'CCSleafCellCompare)
                   (setq count (arrayref stoppingCellTable stoppingCell))
                   (setq total (plus total count))
                   ;---------------------------------------------------------
                   ; Try to get the model from the cell CDF
                   ;---------------------------------------------------------
                   (setq cdf 
                         (cdfGetCellCDF 
                           (ddGetObj 
                              (car stoppingCell)
                              (cadr stoppingCell)
                              )))
                   (setq model nil)
                   (when cdf
                     (setq model (getq (cdfFindParamByName cdf "model") value))
                     )
                   (unless model
                     (setq model "")
                     )
                   (unless (or (zerop count) (null port))
                     (fprintf port "%s %s %s (%s): %d\n"
                              (car stoppingCell)
                              (cadr stoppingCell)
                              (caddr stoppingCell)
                              model
                              count
                              )
                     )
                   )
          )

    This then outputs something like this:

    analogLib cap symbol (): 88
    gpdk090 mimcap symbol (gpdk090_mimcap): 4
    gpdk090 nmos1v symbol (gpdk090_nmos1v): 38
    gpdk090 nmos2v symbol (gpdk090_nmos2v): 106
    gpdk090 nmoscap2v3 symbol (gpdk090_nmoscap2v): 1
    gpdk090 pmos1v symbol (gpdk090_pmos1v): 32
    gpdk090 pmos2v symbol (gpdk090_pmos2v): 8
    gpdk090 pmoscap2v symbol (gpdk090_pmoscap2v): 3
    gpdk090 primRes2 symbol (): 1
    gpdk090 primRes3 symbol (): 982
    Total: 1263

    As  you can see, it puts the model name in parentheses (if there is a model) after the component name. I'm afraid I don't have the bandwidth to try to make this more universal (i.e. try to figure out if it really is called model, or if the same component exists on the schematic with different values of model). Sorry! Maybe the above is enough though?

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • MauroF
    MauroF over 6 years ago in reply to Andrew Beckett

    Hi Andrew,

    thanks a lot !! The code works as you  said when the same component is placed with two different models value only one is reported. I can work on this code and try to do fix this behaviour

    BR

    M

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 6 years ago in reply to MauroF

    Since many PDKs have a fixed model per component, I didn't want to over-engineer the solution if the quick change I made was sufficient. Sorry that I don't have the bandwidth to make a more comprehensive change to do what you want...

    Regards,

    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