next up previous contents index
Next: Xic Native PCells Up: Parameterized Cells Previous: How PCells Work   Contents   Index

PCell History and Status

Historically, the pcell concept was developed for the Cadence Virtuoso layout editor, and supported pcells used the SkillTM language which is the scripting language of the Virtuoso system. This remains the dominant type of pcell around, due to the ubiquity of Cadence installations. However, the Skill language is not available outside of the Cadence environment, so these pcells are not portable to other tools.

The OpenAccess project addressed the pcell portability problem by providing a standardized interface for pcells, with the execution being carried out through a ``plug-in'' that a vendor, or user, may supply. A pcell, in concept, can be created to use any suitable programming language, provided that the tool used to instantiate the pcell is capable of executing that language. With OpenAccess, the portability problem is reduced to obtaining a plug-in for the pcell language.

There are example plug-ins distributed with OpenAccess that handle Tcl and C++. Unfortunately, the Skill language is not available for general use outside of the Cadence environment. It is not really attractive anyway, as it was developed back in the prehistoric days when Lisp ws ``cool'', and abominations like EDIF seemed important. There are far better languages, such as Python, available today.

The concept of portable pcells was championed by a company called Ciranova, that supplied an OpenAccess plug-in for Python. They released this, along with companion applications for Python pcell (``PyCell'') development, examples, and precompiled OpenAccess and Python libraries as a free ``PyCell Studio'' download. Ciranova was subsequently bought by Synopsys, but the PyCell Studio remains available and apparently is still under development. An industry group, IPLnow.com (http://www.iplnow.com) which includes TSMC and other foundries and some tool vendors, is pushing the cause of ``interoperable'' PDK libraries based on portable pcells.

Xic is intended to be fully compatible with the PyCell Studio and PyCells, through the OpenAccess interface plug-in. In addition, Xic without OpenAccess provides support for Python pcells, and the Ciranova protocols for stretch handles and abutment. However, Ciranova provides a number of library modules and functions as part of its Python implementation that are not present without the Ciranova plug-in and OpenAccess.

Xic with OpenAccess has some limited capability with Skill-based pcells through the Virtuoso Express PCells feature. This allows export is pre-instantiated cached sub-masters of pcells, but not the pcells themselves. This capability is provided through the same OpenAccess plug-in technology mentioned above, but in this case if the parameter set does not have a pre-built sub-master in cache, the instantiation will fail.

The !rmpcprops command will remove the properties that make pcells special throughout the hierarchy of the current cell. This operation is not undoable, and renders the hierarchy henceforth free of any pcell history. The user may wish to do this to hierarchies imported from Virtuoso, as the Skill pcells can not be evaluated in the Xic environment. In this case, retaining the pcell identities may be pointless, and in fact this may cause trouble, for example when writing output pcell sub-masters are not written unless the user overrides the default (e.g., by checking the box in the Export Control panel).


next up previous contents index
Next: Xic Native PCells Up: Parameterized Cells Previous: How PCells Work   Contents   Index
Stephen R. Whiteley 2022-05-28