• 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. Skill Code to modify pin names

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 126
  • Views 16624
  • 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

Skill Code to modify pin names

bouhoume
bouhoume over 12 years ago

I've written a skill code that is supposed to change one of the pin names of a given cell from an old value to a new one in the schematic and symbol views. It works well on the surface but gives a warning that I have to fix: the pin name gets changed as wanted in both views but there's a warning that the pin list of the symbol does not match the pins on the symbol. In other words, although the pin on the symbol is changed, the pin name in the pin list is unchanged and I'm stumped as to how to reconcile the two.

Here's the code and if anyone has any insights on this issue, please let me know:

 

/* To be run on a single cell; the cell will have to be checked out first; lib and cell will be provided as argument*/

 

procedure(cellChangePinName(myLib myCell oldName newName)

let( ( myInstList myInstances myInst mycv myListOfNets myNet)

        ;cv=geGetEditCellView()

        if(!dbOpenCellViewByType(myLib myCell "schematic" "schematic" "a" )==t then

                printf("\nCell is unwritable, make sure it's checked out and try again\n")

        else

 

                mycv = dbOpenCellViewByType(myLib myCell "schematic" "schematic" "a" )

                ;mycv = dbOpenCellViewByType("temp_brou" mycv~>cellName "schematic" "schematic" "a" )

 

                myInstList=nil

                myInstList = setof( myInstances mycv~>instances  myInstances~>pin~>term~>name == oldName )

                ;myInstList = setof( myInstances mycv~>instances  myInstances~>pin~>term~>name == "VDD" )

                if(length(myInstList)==0 then

                        printf("\nThere are no pin names of that name in the schematic of this cell:\n%s......%s/%s\n" oldName myLib myCell)

                else

                        foreach(myInst myInstList

                            myInst~>pin~>term~>name = newName

                            ;myInst~>pin~>term~>name = "VDD_brou"

myListOfNets=setof(myNets mycv~>nets myNets~>name==oldName)

foreach(myNet myListOfNets

dbMergeNet(dbMakeNet(myNet~>cellView newName) myNet~>term~>net)

myNet~>name=newName

);foreach

                        );foreach 

schVIC(mycv)

                ;dbSave(mycv)

                dbClose(mycv)

                );if

        );if 

if(!dbOpenCellViewByType(myLib myCell "symbol" nil "a" )==t then

            printf("\nCell is unwritable, make sure it's checked out and try again\n")

        else

 

mycvS = dbOpenCellViewByType(myLib myCell "symbol" nil "a" )

            myInstList=nil

            myInstList = setof( myInstances mycvS~>shapes  myInstances~>pin~>term~>name == oldName )

            if(length(myInstList)==0 then

                printf("\nThere are no pin names of that name in the symbol of this cell:\n%s......%s/%s\n" oldName myLib myCell)

            else

                foreach(myInst myInstList

                    myInst~>pin~>term~>name = newName

;myInst~>pin~>term~>name = "VDD_brou"

myListOfNets=setof(myNets mycv~>nets myNets~>name==oldName)

foreach(myNet myListOfNets

dbMergeNet(dbMakeNet(myNet~>cellView newName) myNet~>term~>net)

myNet~>name=newName

);foreach

                );foreach

schVIC(mycvS)

;dbSave(mycvS)

dbClose(mycvS)

            );if

 

        );if   

);let 

) ;proc

 

  • Cancel
  • W Relyveld
    W Relyveld over 12 years ago

    Hello Bouhoume,

     I think you need to check if the new name is a valid net and terminal. If not you need to create them. As example:

    Net = dbFindNetByName( Cell newName)

    unless( Net Net = dbCreateNet( Cell newName))

    Term = dbFindTermByName( Cell newName)

    unless( Term Term = dbCreateTerm( Net newName IOType)) 

     You need to define IOType ( "input" etc. ) Cell is mycv.

     

    Greetings, William 

    • 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