• 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. Update Pcell parameter with skill

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 143
  • Views 12337
  • 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

Update Pcell parameter with skill

TeeBro
TeeBro over 4 years ago

I need to update a pcell parameter in a layout; specifically the pcell revision parameter. I would like to open the layout and update all the instances from the process library to the latest revision.  I have included the following code that seems to work but I wanted to ask if there is a safer way to update this parameter and also if there is anything I'm omitting in the update process that may be a problem.  I know that different pcell revisions have new layers/parameters that are added and I'm thinking there might be another step I'm missing. Note: this code assumes that the defValue param is the latest rev.

procedure( updatePcellRevs( lib cell view pLib)
    let ( cv targetObjs paramIQ )
        cv=dbOpenCellViewByType( lib cell view "" "a")
        targetObjs=setof(x cv~>instances x~>libName==pLib)
        if( targetObjs then
            foreach( inst targetObjs
                if( paramIQ=cdfFindParamByName(cdfGetInstCDF(inst),"pcellRev") then
                    if( paramIQ~>value==paramIQ~>defValue then
                        printf("No update needed.\n" nil )
                    else
                        if( cdfUpdateInstSingleParam(inst,paramIQ) then
                            printf("Changing \"%s\": %s --> %s\n" paramIQ~>prompt paramIQ~>paramIQ~>value paraIQ~>defValue )
                        else
                            printf("ERROR --> Parameter update failed!\n" nil )
                        ); close if
                    ); close if
                ); close if
            ); close foreach
        ); close if
        dbSave(cv)
        dbClose(cv)
    ); close let
); close procedure

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    This seems reasonable enough (although I've never used cdfUpdateInstSIngleParam - the documentation is a little sparse on this to say the least, so I assume it resets it back to the effective "value" which is usually the same as the defValue assuming somebody hasn't messed around with the effective CDF in the session).

    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