Home > Community > Blogs > Mixed-Signal Design > managing eco using pcell in mixed signal design
Login with a Cadence account.
Not a member yet?
Create a permanent login account to make interactions with Cadence more convenient.

Register | Membership benefits
Get email delivery of the Mixed-Signal Design blog (individual posts).


* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

A Quick Tutorial on Managing ECOs Using Pcells in Mixed Signal Designs

Comments(0)Filed under: mixed-signal, ECOs, signoff, mixed signal, OpenAccess, Virtuoso, Encounter, IC 6.1, mixed signal design, STA, timing model, static timing analysis, oa, ECO, open access, Mixed signal physical implementation, mixed-signal ECOs, parasitic, Virtuoso environment, mixed signal solution, EDI, EDIS, mixed signal implementation, ECOs and PCells

The purpose for creating a Pcell is to automate the creation of data. Pcells should be designed as standalone entities, independent of the environment in which they are created and independent of the variety of environments in which you or someone else might want to use them. An environment can react to a Pcell, but Pcell code should not react to, interact with, or be dependent on an environment. Although it is possible to create Pcells dependent on something in your current or local environment, and/or using unsupported or un-recommended functions, Pcell code is likely to fail when you try to translate it for a different environment.

Functions that are not supported for use within SKILL pcells usually belong to specific applications (tools); they are unknown to other environments, to other tools, and to data translators. For example, if you create a Pcell in the Virtuoso environment and include place-and-route functions, the Pcell will fail in the layout environment. Also, application-specific functions that are not supported for customer use can disappear or change, without notice.

Why you should create a Pcell? Creating Pcells for the ECO sometimes helps when we are not sure what size of cell we will have to use for fixing timing violations. Then,  just changing a parameter in the Pcell may do the trick. Generally, you can identify them by their prefixes. However, you can also use all of the basic SKILL language functions. In the following example, we will demonstrate how you can insert the buffer during hold time fix (as part of the ECO) flow using Pcell:

1.   At the Linux prompt set the following environment variables:


setenv CDS_EXP_PCELL_DIR ./.expressPcells

 2.    Invoke Virtuoso and open the design. Note that for Virtuoso versions before IC6.1.4.500.1, VLS-XL or VLS-GXL is required to save the express PCell cache. In IC6.1.4.500.1 and later versions, all Virtuoso products support this.

 3.    Select Tools->Express Pcell Manager. Fill out all the details and Enable Caching of the Pcells check box with Auto Save option. Press Save Copy to save the Pcell Layout Cache. This step is necessary to enable inter-operation of the data between Encounter and Virtuoso.

 4.    Open the design using  

Library Manager -> <Library name> <Cell name> <view name>

 5.    Zoom and select the flip-flop (FF1), in front of which the Pcell has to be inserted.

 6.    To placed the Pcell go to create -> Instance -> Library:pcell cell:pcell view:layout and placed the instance (I1) to a specific location (x1, y1) in between the flip-flop (FF1) and previous Instance (I2).

 7.    To do the connectivity

Select I2 instance->connectivity->net->propagate-> A: I2 Y: net1

Select I1 instance->connectivity->net->propagate-> A: net1 Y: net2

Select FF1 Instance->connectivity->net->propagate->D: net2

 8.    Press Save copy to save the design to OA and exit Virtuoso.

 9.    To do ECO routing in the Encounter Digital Implementation System (EDIS), make sure the same environment variables of step 1 is set before invoking the tool.

10. Before restoring the OA design database, update the config file with the Pcell library as below:

set rda_Input(ui_timelib,max) ./lib/max/spcbuf_wc.lib"

set rda_Input(ui_timelib,min) ./lib/min/spcbuf_bc.lib"

 11. Within EDI, follow these steps to restore the OA design.

restoreOaDesign <Library name> <cell name> <view name>

The design, including the Pcells, should now be read in properly.  If the Pcells still do not appear correctly, remove the ./.expressPcells directory and repeat steps 1-4 above. This will make sure new Pcell abstracts are created.

Note: In IC6.1.4 onwards, the cache saved is in a different format than what is saved by IC6.1.3. IC614 can read the Express PCell Cache created by IC6.1.3 and IC6.1.4, but IC6.1.3 cannot read the Express PCell Cache created by IC6.1.4. If you have made a cache using IC6.1.4 then make sure the LD_LIBRARY_PATH environment variable points to <IC6.1.4>/tools/lib while using EDIS. For example:

  setenv LD_LIBRARY_PATH <IC6.1.4>/tools/lib

If the cache was made by IC6.1.3 then the LD_LIBRARY_PATH variable can be set to the tools/lib directory under your IC6.1.3 installation. 

12. Finally, take the following steps to do the hold time fixing and save the design into OA database:


timeDesign -postRoute -hold

saveOaDesign <Library name> <cell name> <view name1> 

Parag Bhatnagar


Leave a Comment

E-mail (will not be published)
 I have read and agree to the Terms of use and Community Guidelines.
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.