• 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. Getting coordinates for pin placement

Stats

  • Locked Locked
  • Replies 15
  • Subscribers 143
  • Views 20815
  • 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

Getting coordinates for pin placement

LongTimeNovice
LongTimeNovice over 10 years ago

Hello, everyone.  I'm trying to examine a pin that's in a layout subcell, and then draw a pin directly over it.  I'm having trouble getting my coordinates in the correct format.  I'm sure of two things: 1) I'm probably making this harder than it needs to be, and 2) I'm probably missing something obvious.  I've pasted the code, and below that is the response from Cadence.

############# Here is my code #############

;GET bBox OF PIN IN TARGET INSTANCE

pBox=car(instTerm~>term~>pins)~>fig~>bBox

;SEPARATE OUT LOWER LEFT COORDINATES

pBoxLL=car(car(pBox))
pBoxFixLL=dbTransformPoint(pBoxLL inst~>transform)

;GET LOWER COORDINATE AND CONVERT TO STRING

pBoxFixLower=car(pBoxFixLL)
sprintf(pBoxFixLower "%L" pBoxFixLower)

;GET LEFT COORDINATE AND CONVERT TO STRING

pBoxFixLeft=cdr(pBoxFixLL)
sprintf(pBoxFixLeft "%L" pBoxFixLeft)
pBoxFixLeft = substring(pBoxFixLeft 2 strlen(pBoxFixLeft)-2)

;MAKE A STRING WITH LOWER AND THEN A COLON AND THEN LEFT

pinCoordsLL=strcat(pBoxFixLower ":" pBoxFixLeft)

;SEPARATE OUT UPPER RIGHT COORDINATES

pBoxUR= cdr(car(pBox))
pBoxUR=car(pBoxUR)
pBoxFixUR=dbTransformPoint(pBoxUR inst~>transform)

;GET UPPER COORDINATE AND CONVERT TO STRING

pBoxFixUpper=car(pBoxFixUR)
sprintf(pBoxFixUpper "%L" pBoxFixUpper)

;GET RIGHT COORDINATE AND CONVERT TO STRING

pBoxFixRight=cdr(pBoxFixUR)
sprintf(pBoxFixRight "%L" pBoxFixRight)
pBoxFixRight = substring(pBoxFixRight 2 strlen(pBoxFixRight)-2)

;MAKE A STRING WITH UPPER AND THEN A COLON AND THEN RIGHT

pinCoordsUR=strcat(pBoxFixUpper ":" pBoxFixRight)

;MAKE STRING WITH UPPER-LEFT COORDS AND LOWER-RIGHT COORDS SEPARATED BY A "/"

pinCoords=strcat(pinCoordsLL "/" pinCoordsUR)

;CONVERT THIS STRING TO A LIST CONTAINING L:L AND U:R

pinCoords = parseString(pinCoords "/")

;PRINT THESE VARIABLES FOR DEBUGGING PURPOSES

printf("  *** pinCoordsLL is %A\n" pinCoordsLL)
printf("  *** PinCoordsUR is %A\n" pinCoordsUR)
printf("  *** PinCoords is %A\n" pinCoords)

;MAKE A PIN USING pinCoords VARIABLE

leCreatePin( cv  pLPP  "rectangle"  pinCoords  pName  "inputOutput"  list("left" "right" "top" "bottom") )

############# This is the response from Cadence starting with the debugging lines and ending with the error #############

*** pinCoordsLL is "11.175:10.315"

*** PinCoordsUR is "11.605:10.745"

*** PinCoords is ("11.175:10.315" "11.605:10.745")

*Error* length: argument must be a list or an array - "11.175:10.315"

<<< Stack Trace >>>

leCreatePin(cv pLPP "rectangle" pinCoords pName ... )

I notice that the PinCoords list, when printed, looks right but has quotes in it.  I wonder if this throwing off my leCreatePin statement.

I'd love to hear your thoughts.

Thank you!

Steven.

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

    LongTimeNovice said:
    ############# This is the response from Cadence starting with the debugging lines and ending with the error #############

    When I first read this, when you were referring to "the response from Cadence" (in a couple of places), I assumed you were talking about a response from Cadence customer support. However, I suspect you mean "the response from Virtuoso". There is no tool called "Cadence"....

    Lawrence's suggestions are what I would have said - I've no idea why you're doing all that conversion to strings. That's the root of both unnecessary complexity and the error you're seeing...

    Regards,

    Andrew.

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

    LongTimeNovice said:
    ############# This is the response from Cadence starting with the debugging lines and ending with the error #############

    When I first read this, when you were referring to "the response from Cadence" (in a couple of places), I assumed you were talking about a response from Cadence customer support. However, I suspect you mean "the response from Virtuoso". There is no tool called "Cadence"....

    Lawrence's suggestions are what I would have said - I've no idea why you're doing all that conversion to strings. That's the root of both unnecessary complexity and the error you're seeing...

    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