PCell caching in a multi-vendor custom IC design environment
Used in the design of analog and custom digital circuits, parameterized cells (PCells) are software scripts used to define physical layout based upon a prescribed set of variable parameters. PCells are the basic building blocks of custom IC design, offering a single programmable PCell in place of many different versions of a drawn cell. PCells can automate very sophisticated functions, maintain complex relationships, and can even interact with their environment. So you can imagine how disconcerting it is when your PCells disappear!
Historically, PCells have been written in proprietary scripting languages (such as Cadence SKILL) developed for each specific layout tool, which means that most PCells in existence today cannot be “seen” by tools from other vendors because they do not have the software needed to evaluate the proprietary scripts.
Recently, the Interoperable PDK Library (IPL) Alliance (see www.IPLnow.com) has initiated a standard for executing interoperable PCells which, coupled with the broad adoption of the OpenAccess interoperable database standard, is addressing the issue of disappearing PCells for new designs. But what about your legacy data? How do you protect your legacy PCells?
For a solution to that problem, a long-time programming methodology called “caching” has been pressed into service. In computer programs, caching is used to store on disk the output from commonly used functions so that when executing a repeated instruction, the results may be obtained more quickly without having to reprocess the request. This same mechanism has been used by some companies to speed up the display of PCells in custom IC design environments and to make tool-specific PCells visible to multiple tools in the design flow.
The significance of these developments is clear: The implementation of interoperable PCells and PCell caching using an interoperable database can solve the Case of the Missing PCell.
Where did the PCell go?
When an IC layout containing PCells (Fig. 1) is opened for viewing or editing by a layout editor, the tool evaluates each PCell script, generates the corresponding layout and holds it in memory. If any parameters are changed – either manually or by changing the parameters in the parameter attribute form – the layout editor will re-evaluate the PCell and change the layout accordingly. In many tools when the layout is saved or closed, only the PCell instance and the instance-specific parameters are written to disk, forcing the tool to re-evaluate the PCell each time it is opened.
Figure 1: Viewing and editing a PCell
Caching can be used to write the PCell layout to disk to make it available to any tool that is capable of reading the layout database of the originating tool. Without caching, the PCell layout will disappear when opened by other tools unless these tools can also execute the PCell script (Fig 2
Figure 2: Execution of a PCell script