• 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. Pcell Creation in Virtuoso 18.1

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 143
  • Views 12434
  • 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

Pcell Creation in Virtuoso 18.1

RaghuLee
RaghuLee over 4 years ago

Hi all,

I wanted to create pcell in cadence v18.1 i am bit stuck with the flow creating I1~>Master~>SubMaster. Can anyone help me with creating a Pcell flow and adding Parameters.

I know CDF and callback functions which i have created a pcell in higher technologies and not working the same in lower technology node.

Thanks

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

    You've not really given a lot to go on here.

    First of all, are you really talking about a PCell? A PCell is a special kind of layout, symbol or schematic where the contents of the view are generated based on a set of parameters passed to some code (generally SKILL in Virtuoso) which usually alters the shapes and connectivity based on those parameters. It is not just where you have parameterised the values of components using pPar() for example. I wanted to say that because often I see the wrong terminology used here which causes confusion.

    Conventionally, PCells are built using either SKILL code directly (using, say, pcDefinePCell() to define the PCell, formal parameters, and code to execute) or using a tool to build the code such as PCell Designer, PAS (PDK Automation System), or the old Graphical PCell Editor. Have you done this part?

    CDF sits alongside PCells - it describes the component, the parameter types, and potentially some callbacks to allow parameters to be derived from others (not something I'm a big fan of, but can be useful if done carefully - see my article The Dangers of CDF Callbacks). It also describes how primitive components are netlisted. You don't have to have CDF for a PCell - but commonly you would.

    Anyway, having done that, you don't have to do anything special to create subMasters. You simply instantiate the PCell master (known as the "superMaster") and based on the values of the PCell parameters passed to that instance, it will actually build the variant (the "subMaster") if it hadn't built that variant already, and instantiate that subMaster instead. If you then change the parameters on the instance, it will re-bind to a different subMaster (building that subMaster from the PCell code if it hasn't been evaluated already). The system itself takes care of this.

    Hopefully that's enough of a high level overview to cover your question. If it doesn't, you'll need to provide some more details so we don't have to guess!

    Andrew.

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

    You've not really given a lot to go on here.

    First of all, are you really talking about a PCell? A PCell is a special kind of layout, symbol or schematic where the contents of the view are generated based on a set of parameters passed to some code (generally SKILL in Virtuoso) which usually alters the shapes and connectivity based on those parameters. It is not just where you have parameterised the values of components using pPar() for example. I wanted to say that because often I see the wrong terminology used here which causes confusion.

    Conventionally, PCells are built using either SKILL code directly (using, say, pcDefinePCell() to define the PCell, formal parameters, and code to execute) or using a tool to build the code such as PCell Designer, PAS (PDK Automation System), or the old Graphical PCell Editor. Have you done this part?

    CDF sits alongside PCells - it describes the component, the parameter types, and potentially some callbacks to allow parameters to be derived from others (not something I'm a big fan of, but can be useful if done carefully - see my article The Dangers of CDF Callbacks). It also describes how primitive components are netlisted. You don't have to have CDF for a PCell - but commonly you would.

    Anyway, having done that, you don't have to do anything special to create subMasters. You simply instantiate the PCell master (known as the "superMaster") and based on the values of the PCell parameters passed to that instance, it will actually build the variant (the "subMaster") if it hadn't built that variant already, and instantiate that subMaster instead. If you then change the parameters on the instance, it will re-bind to a different subMaster (building that subMaster from the PCell code if it hasn't been evaluated already). The system itself takes care of this.

    Hopefully that's enough of a high level overview to cover your question. If it doesn't, you'll need to provide some more details so we don't have to guess!

    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