• 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

    Jameel,

    A few things:

    1. The code for the pcell itself (i.e. the body of the pcDefinePCell) does not need to be loaded each time - in fact if another user is using it, they probably wouldn't have write permission to redefine the pcell every time. The code for the body of the pcDefinePCell is stored within the pcell's view on disk.
    2. Similarly you would not want to define the CDF each time - that's also stored permanently.
    3. Any auxilliary functions you call from the body of your pcell (e.g.CCScreateBoxAndLabels) do however need loading each time the session starts - because these are not stored within the pcell view itself.
    4. So you should probably put the pcDefinePCell calls and CDF definition either in a separate file, or surround it in a procedure definition:
      procedure(MYdefinePCellsAndCDF()
        pcDefinePCell(...)
        let(... ; define CDF
        )
      )

      and then call MYdefinePCellsAndCDF whenever you want to redefine the pcells
    5. It's better to load the auxilliary functions from the libInit.il within the library containing the pcells (NQ78Z in this case). The libInit.il will get loaded the first time the library gets accessed - either within virtuoso itself or within the background stream out process. pipo/strmout (depending on the version you're using) does not load the .cdsinit file - hence the problem with the function not being defined.

    Kind Regards,

    Andrew.

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

    Jameel,

    A few things:

    1. The code for the pcell itself (i.e. the body of the pcDefinePCell) does not need to be loaded each time - in fact if another user is using it, they probably wouldn't have write permission to redefine the pcell every time. The code for the body of the pcDefinePCell is stored within the pcell's view on disk.
    2. Similarly you would not want to define the CDF each time - that's also stored permanently.
    3. Any auxilliary functions you call from the body of your pcell (e.g.CCScreateBoxAndLabels) do however need loading each time the session starts - because these are not stored within the pcell view itself.
    4. So you should probably put the pcDefinePCell calls and CDF definition either in a separate file, or surround it in a procedure definition:
      procedure(MYdefinePCellsAndCDF()
        pcDefinePCell(...)
        let(... ; define CDF
        )
      )

      and then call MYdefinePCellsAndCDF whenever you want to redefine the pcells
    5. It's better to load the auxilliary functions from the libInit.il within the library containing the pcells (NQ78Z in this case). The libInit.il will get loaded the first time the library gets accessed - either within virtuoso itself or within the background stream out process. pipo/strmout (depending on the version you're using) does not load the .cdsinit file - hence the problem with the function not being defined.

    Kind 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