• 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
  • Sujitkrsingh
    Sujitkrsingh over 7 years ago in reply to drdanmc

    Hi Dan,

    Can you please help me to move the pin on the net  if pin name and net name is same using skill?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • DannyRittman
    DannyRittman over 7 years ago in reply to Sujitkrsingh

    Try the next code:

    procedure(MovePinsToInstances()
    let( (term pin net childTerm pinFigLocation location instTerm pinFig)
    cv=geGetWindowCellView()
    foreach(term cv~>terminals
    ; iterate over all the pins for this terminal
    foreach(pin term~>pins
    pinFig=pin~>fig
    net=term~>net
    ; only do this if there aren't more than one inst term
    ;unless(cdr(net~>instTerms)
    instTerm=car(net~>instTerms)
    childTerm=instTerm~>term
    childPinFig=car(instTerm~>term~>pins)~>fig
    ; location within the instance master
    location=centerBox(childPinFig~>bBox)
    ; transform to the top level coordinate system
    location=dbTransformPoint(location instTerm~>inst~>transform)
    pinFigLocation=centerBox(pinFig~>bBox)
    ; calculate the overall transform to move the pin to the new location
    ;transform=dbConcatTransform(list(-xCoord(pinFigLocation):-yCoord(pinFigLocation) "R0" 1) location)
    transform=dbConcatTransform(list(-xCoord(pinFigLocation):-yCoord(pinFigLocation) "R0" 1) list(xCoord(location):yCoord(location) "R0" 1))
    dbMoveFig(pinFig cv transform)
    ;    )
       )
      )
     ) ; let
    )


    Danny

    • 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