• 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. Blogs
  2. Analog/Custom Design
  3. A Quick Tutorial on Managing ECOs Using Pcells in Mixed…
paragb
paragb

Community Member

Blog Activity
Options
  • Subscribe by email
  • More
  • Cancel
CDNS - RequestDemo

Have a question? Need more information?

Contact Us
ECO
Static timing analysis
EDI
mixed signal design
parasitic
IC 6.1
mixed signal solution
Open Access
STA
timing model
ECOs
mixed-signal ECOs
Mixed-Signal
encounter
Virtuoso
oa
EDIS
ECOs and PCells
Mixed signal physical implementation
mixed signal
signoff
OpenAccess
Virtuoso environment
mixed signal implementation

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

16 May 2012 • 3 minute read

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_ENABLE_EXP_PCELL true

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:

ecoRoute

timeDesign -postRoute -hold

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

Parag Bhatnagar


CDNS - RequestDemo

Try Cadence Software for your next design!

Free Trials

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information