• 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. Include external information/procedure in PCell

Stats

  • Locked Locked
  • Replies 5
  • Subscribers 144
  • Views 7014
  • 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

Include external information/procedure in PCell

maxaniertud
maxaniertud over 5 years ago

Hello,

Situation:

I  have created a PCell that generates a (transformer) layout based on the parameters.
All custom procedures are included (as lambda functions) inside the PCell body.

Currently, technology related information (which layers to use, etc.) is embedded in the body, the parameter default values (layer/metalstack options) as well as the cdf default values.
I would like to extract that information and move it into a dedicated file or at least a single place in the file. Thereby, it should be much easier porting the PCell to a different technology.

Furthermore, I would like to use some of the included functions/code in a different PCell. Currently, I just duplicate the code, but that is very annoying for code maintenance.

Issue:

If I move the information or these functions outside the PCell definition into separate procedures, it only works as long as they are loaded. Loading them in the CIW does not work for streaming out (for DRC etc.).

Do you have any idea how I could:

a) Copy/Attach already defined code to the PCell.

How this is meant:

I define a procedure/lambda function and somehow pass it to pcDefinePCell so it can be used in the body without loading the procedure again.

OR if this does not work

b) Specify a script that is always loaded when the PCell is evaluated

There is .cdsinit, but as far as I know that is only for the graphical tools.

There is libInit.il included in the PDK, but I don't think me (or the technology manager) can/should modify it.

Thank you very much for any input.

Using Virtuoso ICADV12.2

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

    The right way to do this is to put it in the libInit.il (or libInit.ils) file within the library containing the PCell. If you have common functions, that's really the right way to do it. It would seem odd to have write permission to the library to define your own PCells, but not be able to update the libInit.il file...

    Note that every library can have a libInit.il file - so perhaps your pcells are in your own library? If so, define (or load) any relevant functions within your own library's libInit.il file.

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    The right way to do this is to put it in the libInit.il (or libInit.ils) file within the library containing the PCell. If you have common functions, that's really the right way to do it. It would seem odd to have write permission to the library to define your own PCells, but not be able to update the libInit.il file...

    Note that every library can have a libInit.il file - so perhaps your pcells are in your own library? If so, define (or load) any relevant functions within your own library's libInit.il file.

    Regards,

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
Children
  • maxaniertud
    maxaniertud over 5 years ago in reply to Andrew Beckett

    Thank you very much.

    I somehow assumed libInit files only exist for PDK libraries.

    I have created a libInit.il file in my own design library and it is being loaded.

    • 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