• 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. Copy pins as strongly connected

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 125
  • Views 14505
  • 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

Copy pins as strongly connected

RVERP
RVERP over 6 years ago

If I copy a pin, then new pin is always weakly connected to the original one.

Is there a way to copy a pin so that the new pin is strongly connected with the original one?

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

    I don't think so (during the copy operation). What you can do is copy the pins, and then use Connectivity->Pins->Strongly Connected, and select the original and new pin (then hit escape). That will do it.

    Regards,

    Andrew.

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

    Indeed, that will do the job for a single pin. But I have hundreds of pins an this function doesn't work on a batch of pins.

    Any other way to make a whole batch of pin pairs strongly connected at once, or do I need to script it?

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

    No, it would need some code writing. The VLS XL Connectivity->Pin->Pin Connectivity Setting form won't help either as if you select all the pins and create a strong connect group, you end up with a single terminal with all the pin figures strongly connected which isn't what you want.

    I just wrote this which does what you want (I think). Just select all the pins that you want strongly connected, and it will convert them to be strongly connected (on their original terminals).

    Andrew

    /* abConvertSelectedPinsToStronglyConnected.il
    
    Author     A.D.Beckett
    Group      Custom IC (UK), Cadence Design Systems Ltd.
    Language   SKILL
    Date       Sep 06, 2019 
    Modified   
    By         
    
    Function to convert selected pin figures to be strongly connected.
    
    abConvertSelectedPinsToStronglyConnected([cv])
    
    ***************************************************
    
    SCCS Info: @(#) abConvertSelectedPinsToStronglyConnected.il 09/06/19.09:01:57 1.1
    
    */
    
    /******************************************************************
    *                                                                 *
    *         abConvertSelectedPinsToStronglyConnected([cv])          *
    *                                                                 *
    *   Convert all selected pins which are on the same terminal to   *
    * be strongly connected pins (keeping them on the same terminal). *
    *             Uses current cellView unless passed in.             *
    *                                                                 *
    ******************************************************************/
    
    procedure(abConvertSelectedPinsToStronglyConnected(@optional (cv geGetEditCellView()))
      let((groupedPinFigures mainPin pinFigs origPin)
        ;--------------------------------------------------------------------
        ; Group the pin figures together to those on the same terminal
        ;--------------------------------------------------------------------
        groupedPinFigures=makeTable('groupedPins nil)
        foreach(obj geGetSelectedSet(cv)
          when(obj~>pin
            groupedPinFigures[obj~>pin~>term]=tconc(groupedPinFigures[obj~>pin~>term] obj)
          )
        )
        ;--------------------------------------------------------------------
        ; Now pick the first pin figure as the master, and move the pin figures
        ; of the rest to be on the same pin as the master, cleaning up any
        ; empty pins as we go
        ;--------------------------------------------------------------------
        foreach(group groupedPinFigures
          pinFigs=car(groupedPinFigures[group])
          mainPin=car(pinFigs)~>pin
          foreach(pinFig cdr(pinFigs)
            origPin=pinFig~>pin
            dbSubFigFromPin(origPin pinFig)
            unless(origPin~>figs
              dbDeleteObject(origPin)
            )
            dbAddFigToPin(mainPin pinFig) 
          )
        )
        t
      )
    )
    
    

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

    No, it would need some code writing. The VLS XL Connectivity->Pin->Pin Connectivity Setting form won't help either as if you select all the pins and create a strong connect group, you end up with a single terminal with all the pin figures strongly connected which isn't what you want.

    I just wrote this which does what you want (I think). Just select all the pins that you want strongly connected, and it will convert them to be strongly connected (on their original terminals).

    Andrew

    /* abConvertSelectedPinsToStronglyConnected.il
    
    Author     A.D.Beckett
    Group      Custom IC (UK), Cadence Design Systems Ltd.
    Language   SKILL
    Date       Sep 06, 2019 
    Modified   
    By         
    
    Function to convert selected pin figures to be strongly connected.
    
    abConvertSelectedPinsToStronglyConnected([cv])
    
    ***************************************************
    
    SCCS Info: @(#) abConvertSelectedPinsToStronglyConnected.il 09/06/19.09:01:57 1.1
    
    */
    
    /******************************************************************
    *                                                                 *
    *         abConvertSelectedPinsToStronglyConnected([cv])          *
    *                                                                 *
    *   Convert all selected pins which are on the same terminal to   *
    * be strongly connected pins (keeping them on the same terminal). *
    *             Uses current cellView unless passed in.             *
    *                                                                 *
    ******************************************************************/
    
    procedure(abConvertSelectedPinsToStronglyConnected(@optional (cv geGetEditCellView()))
      let((groupedPinFigures mainPin pinFigs origPin)
        ;--------------------------------------------------------------------
        ; Group the pin figures together to those on the same terminal
        ;--------------------------------------------------------------------
        groupedPinFigures=makeTable('groupedPins nil)
        foreach(obj geGetSelectedSet(cv)
          when(obj~>pin
            groupedPinFigures[obj~>pin~>term]=tconc(groupedPinFigures[obj~>pin~>term] obj)
          )
        )
        ;--------------------------------------------------------------------
        ; Now pick the first pin figure as the master, and move the pin figures
        ; of the rest to be on the same pin as the master, cleaning up any
        ; empty pins as we go
        ;--------------------------------------------------------------------
        foreach(group groupedPinFigures
          pinFigs=car(groupedPinFigures[group])
          mainPin=car(pinFigs)~>pin
          foreach(pinFig cdr(pinFigs)
            origPin=pinFig~>pin
            dbSubFigFromPin(origPin pinFig)
            unless(origPin~>figs
              dbDeleteObject(origPin)
            )
            dbAddFigToPin(mainPin pinFig) 
          )
        )
        t
      )
    )
    
    

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

    Just tested this, works perfectly. Thank.

    • 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