• 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. Change Pins from VSS to DVDD and vice versa in the Sche...

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 142
  • Views 1745
  • 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

Change Pins from VSS to DVDD and vice versa in the Schematic

FormerMember
FormerMember over 7 years ago

Hi All,

I am trying to change the pin names and the net names in the schematic.

I am trying the following code for changing the pin name:-

cv=geGetWindowCellView()
    allPins=setof(x cv~>shapes x~>pin)
foreach(x1 allPins
if(rexMatchp("VSS" x1~>pin~>name)
then
rexCompile( "^[A-Z]$")
rexReplace( x1~>pin~>name "DVDD" 0)))

This is working fine for the layout but in Schematic it is not changing anything. 

Can anyone please suggest something, Any other approach will also work.

Thanks

Utkarsh

  • Cancel
  • FormerMember
    FormerMember over 7 years ago

    In Schematic I am using cv~>instances approach to get allPins, Still it doesnt work

    Thanks
    Utkarsh

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to FormerMember

    Well, that code wouldn't work in the layout either. There are several things at issue here:

    1. You're searching for the pin name - which almost certainly doesn't matter. You probably want to be changing the terminal name as that is what affects the connectivity. The pin name itself is pretty arbitrary - can be anything and doesn't really affect the behaviour (about the only place it matters is for VLS XL abutment within a pcell).
    2. Your rexCompile and rexReplace won't do anything because it's looking for a name that is a single character long - and since you've just matched any pin name that contains VSS (note, this could be MYVSS or VSS3), it clearly has more than one character.
    3. Even if you'd commented out the rexCompile line (the pattern in the rexMatch is still active, so probably you don't need it), you don't do anything with the result of the rexReplace - so the pin name (had that been what you wanted to change) would be unaffected. You'd have to do x1~>pin~>name=rexReplace( x1~>pin~>name "DVDD" 0))) for it to work.
       

    Now, assuming you really wanted to change the terminal name, the following code would work in both schematic and layout:

    cv=geGetEditCellView()
    foreach(term cv~>terminals
      when(rexMatchp("VSS" term~>name)
        term~>name=rexReplace(term~>name "DVDD" 0)
      )
    )

    That would replace MYVSS with MYDVDD if that's what you wanted. If you only want an exact match for VSS, don't need the pattern matching:

    cv=geGetEditCellView()
    foreach(term cv~>terminals
      when(term~>name=="VSS"
        term~>name="DVDD"
      )
    )

    Regards,

    Andrew.

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • FormerMember
    FormerMember over 7 years ago in reply to Andrew Beckett

    Hi Andrew 


    Thanks a lot for the answer, (I will try this code and will come back if I face any issue)
    I have a little doubt, The reason why I have not used rexReplace in this fashion  "term~>name=rexReplace(term~>name "DVDD" 0)" was that I was considering it to work like schReplaceProperty() function which does not require any variable to assign.

    Can you please tell me the difference between these two functions or the way they should be used. 

    Thanks

    Utkarsh

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • FormerMember
    FormerMember over 7 years ago in reply to Andrew Beckett

    Hi Andrew

    The code is working fine. Thanks.

    Utkarsh

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 7 years ago in reply to FormerMember

    Hi Utkarsh,

    rexReplace is a general pattern matching/replacement function - it takes a string as input and returns the updated string. It does not update any variable or expression. schReplaceProperty is explicitly for updating a named property on an object - it's not a matter of updating a variable, but it's designed specifically to modify a parameter on an object. So they do completely different things...

    Anyway, glad the updated code is working.

    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