• 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. Correct placement of pcell files and permissions

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 143
  • Views 9852
  • 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

Correct placement of pcell files and permissions

Miguel V
Miguel V over 3 years ago

Hello,

I have a problem with a pcell I made.  I created a pcell for a particular library that's accessible to everyone (library is read only to everyone).  I put the pcell .il skill file inside the library as well as the CDF .il file.  I then created a libInit.il file in the library which then loads the pcell and then the CDF file.  It works fine for me when I first access the library, but other people cannot access it unless i set the permission to allow write access to the pcell itself (layout view).  I assume this is not supposed to be the case which leads me to believe I am doing something wrong.  I was under the impression that once I compiled the pcell and loaded the CDF file that it would work just fine for everyone else.

Thank you,

Miguel

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 3 years ago

    Miguel,

    I'm assuming that the code you are loading from the libInit.il is doing:

    pcDefinePCell(
       ...
    )

    If so, then that should not be loaded from the libInit.il because it specifically creates the PCell and needs write access to the cellView it is creating. There's no need to load it, because the purpose of this function is to take the code in the body of the pcDefinePCell and actually store it in the view (often layout, but could be a schematic or symbol) and then the PCell is self-contained.

    The only thing you need to load from the libInit.il is if you are calling any custom functions from within the body of the PCell - for example:

    pcDefinePCell(
      ...
      MyCustomFunction(args...)
    )

    and then:

    procedure(MyCustomFunction(args...)
      ...
    )

    You need to ensure that the procedure MyCustomFunction is defined, and so a file containing that should be loaded from the libInit.il (of course, you need to separate it from a file that defines the PCell so that it doesn't try to redefine it too. You can get around that (and store it all in one file) by doing this:

    procedure(MyCreatePCell()
      pcDefinePCell(
        ...
        MyCustomFunction(args...)
      )
    )

    procedure(MyCustomFunction(args...)
      ...
    )

    and then you would load this file in a Virtuoso session, call MyCreatePCell() to create your PCell, but then the file above can safely be loaded from the libInit.il because it won't be trying to call MyCreatePCell at load time.

    I hope that clarifies things!

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Miguel V
    Miguel V over 3 years ago in reply to Andrew Beckett

    Hi Andrew,

    I got it now thank you.  That was just the explanation I needed.  I was able to fix the mistake and doing what you said lets everyone access the pcell without issues.  Thank you very much.

    -Miguel

    • 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