• 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. Loading Pcell into virtuoso

Stats

  • Replies 5
  • Subscribers 143
  • Views 2288
  • Members are here 0

Loading Pcell into virtuoso

AE202502048334
AE202502048334 6 months ago

I have created a PCell for metal tracks using skill.

The code relies on a having a created cell with a specific name and library so it can generate the shapes inside it and I checked in this view.

I have string / float inputs to control metal tracks number and widths, also switches to control the appearing or disappearing of some layers (cut layers for poly and MD).

When I first load the code it works very well no issues and create my pcell just fine and the switches and inputs work. I instantiated it in a layout view called "test".

The issue

when I restart virtuoso, the "test" view gives me pcell evaluation failed as it needs to load the script every time, so I added the "load script line" in libinit.il file of the library containing the pcell view, now each time I reload virtuoso it prompts me to check out the pcell view and I choose "NO", now I open the "test" view to find only the metal tracks shapes are there but all other shapes are not there (all these shapes rely on the ON/OFF switches that I have in my pcell)

The code controlling these shapes are if statements and logic written inside pcell main body (I don't use callbacks)

I believe this behavior is normal as I redefine the cell each time I open virtuoso so it sort of resets all my switch values, The question here how to avoid the "pcell evaluation failed" message, or what is the right part of code to have it written in libinit.il file to define my pcell without rerunning the code again and resetting everything.

Thanks in advance

  • Sign in to reply
  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett 6 months ago

    You should not call pcDefinePCell from within the libInit.il . You would however need to define any custom functions used within the pcDefinePCell because otherwise those will not be available. I suggest (if it's all in one file) doing something like this:

    procedure(MyAuxilliaryFunc(x y z)
      ; do something
    )

    procedure(MyDefinePCell()
      pcDefinePCell(
        list(ddGetObj("libName") "cellName" "layout")
        ; formal params
        (
          ...
        )
        ; body of the PCell - does the work and probably
        ; calls your other custom functions
        MyAuxilliaryFunc(e f g)
     )
    )

    Loading all this would be fine. You only then need to define the PCell once, by calling MyDefinePCell() - the code in the body of the pcDefinePCell will be stored in the layout view  (or whatever view you're creating) and does not need to be defined again. The auxiliary functions will be loaded each time by virtue of the libInit.il

    Andrew

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • AE202502048334
    AE202502048334 5 months ago in reply to Andrew Beckett

    Thank you Andrew, Will apply this structure

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • AE202502048334
    AE202502048334 5 months ago in reply to Andrew Beckett

    Thank you Andrew, Will apply this structure

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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