• 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. modifying pin names of a symbol

Stats

  • Locked Locked
  • Replies 9
  • Subscribers 143
  • Views 18707
  • 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

modifying pin names of a symbol

kawan
kawan over 12 years ago

I need to grab a symbol, find all the pins and then change the names to include dig_ in front of the original pin names.

I then need to recrerate the symbol. I want teh symbol to have the same shape and pin locations as the original.

 So I have the following:

 ;test code

procedure( buildmysymbol()

pinlist = schSymbolToPinList("zakir_ams" "spi_top" "symbol")
pat=pcreCompile("dig_")
pinlist = pcreReplace(pat pinlist "dig1" 0)

schPinListTosymbol("zakir" "spi_top" "symbol" pinlist)
)

 

The cod edoes not work since the pinlist used in  pcreReplace(pat pinlist "dig1" 0) is  a list and not a string.

Any way to get around this?

 Thanks

zakir

 

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    Zakir,

    See below. You can do the same kind of things here too (pcre is "Perl Compatible Regular Expression"). Note that I also included fixing the portOrder property too - I hadn't done this before (this is the bit at the end). Probably not too critical, but thought I might as well fix that at the same time.

    procedure( buildmysymbol()
      let((pinlist pat)
        pinlist = schSymbolToPinList("zakir_ams" "spi_top" "symbol")
        pat=pcreCompile("^dig_(.*)_1v1(.*)")
        foreach(port pinlist->ports
            when(pcreExecute(pat port->name)
                port->name=pcreSubstitute(pat "\\1\\2")
            )
            foreach(pin port->pins
                when(pcreExecute(pat pin->name)
                    pin->name=pcreSubstitute(pat "\\1\\2")
                ) 
            )
        )
        pinlist->prop->portOrder=foreach(mapcar portName pinlist->prop->portOrder
            if(pcreExecute(pat portName)  then
                pcreSubstitute(pat "\\1\\2")
            else
                portName
            )
        ) 
        schPinListToSymbol("zakir" "spi_top" "symbol" pinlist)
      )
    )

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    Zakir,

    See below. You can do the same kind of things here too (pcre is "Perl Compatible Regular Expression"). Note that I also included fixing the portOrder property too - I hadn't done this before (this is the bit at the end). Probably not too critical, but thought I might as well fix that at the same time.

    procedure( buildmysymbol()
      let((pinlist pat)
        pinlist = schSymbolToPinList("zakir_ams" "spi_top" "symbol")
        pat=pcreCompile("^dig_(.*)_1v1(.*)")
        foreach(port pinlist->ports
            when(pcreExecute(pat port->name)
                port->name=pcreSubstitute(pat "\\1\\2")
            )
            foreach(pin port->pins
                when(pcreExecute(pat pin->name)
                    pin->name=pcreSubstitute(pat "\\1\\2")
                ) 
            )
        )
        pinlist->prop->portOrder=foreach(mapcar portName pinlist->prop->portOrder
            if(pcreExecute(pat portName)  then
                pcreSubstitute(pat "\\1\\2")
            else
                portName
            )
        ) 
        schPinListToSymbol("zakir" "spi_top" "symbol" pinlist)
      )
    )

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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