• 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. How to access pcell instance co-ordinates from within Pcell...

Stats

  • Locked Locked
  • Replies 11
  • Subscribers 143
  • Views 18127
  • 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

How to access pcell instance co-ordinates from within Pcell code.

Jameel
Jameel over 14 years ago
Hi, Is there a way to find out the co-ordinates of the pcell instance from within the pcell code? Say for example, I want to create a pcell that prints a label showing the co-ordinates of the where the pcell is placed. within the code of the pcell I can create the label at the origin but i need to know the co-ordinates of the pcell instance in order to print the label. One way of doing this would be to pass the co-ordinate of the pcell instance as parameters, but am not sure if this is the correct way to do it. Thanks, -Jameel
  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 14 years ago
    Lawrence, Jameel,

    The problem with the original code is that it was accessing the variable ilInst directly in the pcell code. This makes no sense because:

    a) ilInst is only set as evaluated labels are evaluated and the displayed
    b) the pcell has no knowledge of the instance that instantiates it - this is obvious when you realise that you could have many instances of the same variant; the pcell only gets evaluated once (it would be very inefficient otherwise).

    Normally the label display functions need to return an atomic (often a string) value.

    So you'd need to make the label:

       label=dbCreateLabel(
                pcCellView ;; cellview label appears in
                list("TEXT" "drawing") ;; layer on which label appears
                (0:0) ;; where label appears
    "sprintf(nil \"special point = %P\" ilInst~>xy)"
                "centerCenter" ;; label justification
              "R0" ;; label orientation
                "stick" ;; font
                10.0 ;; height for the label
            )
    label~>labelType="ILLabel"

    That way the sprintf is the expression evaluated during label display.

    Regards,

    Andrew
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 14 years ago
    Lawrence, Jameel,

    The problem with the original code is that it was accessing the variable ilInst directly in the pcell code. This makes no sense because:

    a) ilInst is only set as evaluated labels are evaluated and the displayed
    b) the pcell has no knowledge of the instance that instantiates it - this is obvious when you realise that you could have many instances of the same variant; the pcell only gets evaluated once (it would be very inefficient otherwise).

    Normally the label display functions need to return an atomic (often a string) value.

    So you'd need to make the label:

       label=dbCreateLabel(
                pcCellView ;; cellview label appears in
                list("TEXT" "drawing") ;; layer on which label appears
                (0:0) ;; where label appears
    "sprintf(nil \"special point = %P\" ilInst~>xy)"
                "centerCenter" ;; label justification
              "R0" ;; label orientation
                "stick" ;; font
                10.0 ;; height for the label
            )
    label~>labelType="ILLabel"

    That way the sprintf is the expression evaluated during label display.

    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