• 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. Automatically placement of PINS on NETS

Stats

  • Locked Locked
  • Replies 12
  • Subscribers 145
  • Views 21806
  • 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

Automatically placement of PINS on NETS

DannyRitt
DannyRitt over 8 years ago

Hello,


When generating/updating PINS in VXL it typically places them near the 0,0 coordinates as one group. I have a large block with many PINS, all grouped near 0,0 coordinates. I am interested to automatically place them on objects with the same layer and NET name. These PINS do not need to be on EDGES but on polygons with the same NET name. The skill script will take all selected PINS and move them to the matched path/rectangle/polygon with the same NET name.

Any ideas will be greatly appreciated.

Danny

  • Cancel
Parents
  • DannyRitt
    DannyRitt over 8 years ago
    Hi Andrew,

    So another approach is to propagate the PINS from lower level and give them the current level names using the following code (Instead of selecting the PINS at the current level and have them moved to their terminals). Didn't work well...

    procedure(PropPins1()
    cv=geGetWindowCellView()

    foreach(inst cv~>instances
    foreach(instTerm inst~>instTerms
    ; if this is an I/O of this cell
    when(instTerm~>net~>term
    foreach(pin instTerm~>term~>pins
    foreach(fig pin~>figs
    ; propagate the pin shape up to this level
    newFig=dbCreateRect(cv list("m1" "drawing") dbTransformBBox(fig~>bBox inst~>transform))
    dbCreatePin(instTerm~>net newFig nil instTerm~>net~>term)

    ; Assign a Label over the PIN with the current level PIN Name
    netName = newFig~>net~>name
    when(netName = newFig~>net~>name
    lbl = dbCreateLabel(
    newFig~>cv
    list("m1" "lvs")
    centerBox(newFig~>bBox);
    netName
    "centerCenter"
    "R0"
    "roman"
    0.0625
    )


    )
    )
    )
    )
    )
    )


    Thanks,

    Danny
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • DannyRitt
    DannyRitt over 8 years ago
    Hi Andrew,

    So another approach is to propagate the PINS from lower level and give them the current level names using the following code (Instead of selecting the PINS at the current level and have them moved to their terminals). Didn't work well...

    procedure(PropPins1()
    cv=geGetWindowCellView()

    foreach(inst cv~>instances
    foreach(instTerm inst~>instTerms
    ; if this is an I/O of this cell
    when(instTerm~>net~>term
    foreach(pin instTerm~>term~>pins
    foreach(fig pin~>figs
    ; propagate the pin shape up to this level
    newFig=dbCreateRect(cv list("m1" "drawing") dbTransformBBox(fig~>bBox inst~>transform))
    dbCreatePin(instTerm~>net newFig nil instTerm~>net~>term)

    ; Assign a Label over the PIN with the current level PIN Name
    netName = newFig~>net~>name
    when(netName = newFig~>net~>name
    lbl = dbCreateLabel(
    newFig~>cv
    list("m1" "lvs")
    centerBox(newFig~>bBox);
    netName
    "centerCenter"
    "R0"
    "roman"
    0.0625
    )


    )
    )
    )
    )
    )
    )


    Thanks,

    Danny
    • 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