Interoperable Process Design Kits (iPDKs)
Interoperable Process Design Kits (iPDKs) is based on the OpenAccess database and uses standard languages such as Tcl and Python that ensure interoperability among all EDA vendor tools. These interoperable PDKs include a comprehensive set of APIs to enable customization, support advanced PDK features and provide an interactive environment for PDK development. Parametric cells written with (PyCells) are used. PyCell is an extension for OpenAccess from Synopsys and not included in the LayoutEditor package.
Choose the Platform
The LayoutEditor supports OpenAccess and iPDK. However OpenAccess is not available for Apple Mac systems. The required OpenAccess extension PyCell runs on 64 bit Windows and Linux only. A fully functions iPDK setup with the LayoutEditor can be archieved on Linux and Windows. So it is recommended to use iPDK on a Linux system. Especially a 64bit Linux system is recommended as the support of PyCell for 32 bit systems is discontinued. This instruction describe the installation of a iPDK environment on a 64bit Linux system like Ubuntu 12.4 or newer, RHEL 6 or newer, ...
Install PyCell
The PyCell installation package is suppliered by Synopsys. You had to complete a request form and will get the download information by mail two days later. To install PyCell uncompress the shipped package and run ./installer in a terminal. It is recommended to keep the default installation folders, especially keeping the main installation path unchanged (/opt/synopsys ) is highly recommended.
Known Problems
The installation will fail on Ubuntu. You had to fix the file install/bin/platname of the installation package. Change the first line from #!/bin/sh to #!/bin/bash. The file needs bash to run correctly. The default shell on Ubuntu dash did not work.
Some iPKDs (e.g. many PDKs from TSMC) come with an own version of PyCell and run only with this version correctly. If that is the case for your PDK, please use the PyCell version shipped by your foundery. These version of PyCell will not install into the default installation path, so that in any case the CNI_ROOT environment variable (see below) must be set. Further more it can be required to adjust the LD_LIBRARY_PATH environment variable form the layout-pycell start script (see as well below). If you need assistance for the modifications, please contact the support.
Install LayoutEditor
The LayoutEditor includes OpenAccess support for all Linux versions. The general Linux packages layout-version.platform.tar.bz2 support OpenAccess start with version 20161101. For details on the LayoutEditor installation, please see Installation.
Start the LayoutEditor with layout-pycell. That is a small script setting up pathes correctly to detect your PyCell installation including the OpenAccess version used by it. If you haven't installed PyCell in the default location set the environment CNI_ROOT before calling this script (e.g. by export CNI_ROOT="/your/installation/path"). layout-pycell is located in the bin folder of the LayoutEditor installation.
Setup lib.defs
The lib.defs is the main configuration file of OpenAccess. All iPDKs you want to use had to be registered there. The default location for this file is /home/username/lib.defs. With the About OpenAccess feature inside the SetupDialog of the LayoutEditor you can check its location. With this dialog you can also check the correct selection of the OpenAccess version. The shown pathes must point to the PyCell installation.
If the lib.defs file don't exists, create it. It is a simple text file and can be edited with any editor including the TextEditor included in the LayoutEditor. Add two lines for each OpenAccess library you use:
DEFINE PDKname /home/username/myPDK ASSIGN PDKname libMode shared
PDKname is the name of the library as it will be used inside the LayoutEditor. /home/username/myPDK is the path where you have installed the iPDK shipped by the foundery. The correct OpenAccess path is the folder which contains the hidden file .oalib. The main iPDK OpenAccess library often required additional libraries like a OpenAccess database with the technical setup. This OpenAccess library must also be listed in the lib.defs file. Also the name of this library must be identical with the reference name used in the main library. Often names like TECH_PDKname are used.
Known Problems
Often the use of specific library names is required by the iPDK, but this names are not well documented. In that case please have a look at the output of the terminal in which you have started the LayoutEditor. The error messages can give a hint to the name. If you start the LayoutEditor which the option layout-pycell --debug you will get even more output to review.
Setup Callbacks
In the iPDK there are links to a programing code written in tcl. The little program code will check parameter range and calculate releated parameters. e.g. for a capacitor after changing width or length the capacitance of the capacitor will be calculated. However the iPDK only include the name of the functions to be call and not the file containing this function on disc. So the location for these tcl callbacks has to be enter in the SetupDialog under macro callback path. It is recommended to enter the path relative. e.g if the iPDK is located under /home/pdk and the callback are under /home/callback/tcl then enter as path ../callback/tcl. You need to enter the folder which contains the *.tcl files and not enter the filenames itself. Common locations for tcl callbacks are Tcl, ../.tcl, ../callbacks/tcl or .cb. Remeber that files and folders starting with a dot are not visible on Linux by default. Adjust the option of your file viewer to see these files and folders.
Known Problems
There is a strict standard for the tcl callback code, however not every foundery follows the specification strictly. One common problem is a code like this:
set instId [iPDK_getCurrentInst] set viewType [oa::getName [oa::getViewType [oa::getDesign $instId]]]
This code will return an error: "The type of argument number 1 does not match the expected type 'oaDesignObject'. This error occurred in 'oa::getDesign'." in the LayoutEditor but run with other tools. The problem is that the ID returned from the first line must not be used in the OpenAccess API. From the iPDK_getCurrentInst documentation: "The returned object ID should not be passed to any standard OpenAccess API. It should be used by IPL Tcl API only. The object ID is not necessary an oa::Inst object. Each tool vendor can choose their own implementation to meet the above criteria." A correct implementation of the line would be using the iPDK API function iPDK_isSchematic instead:
set instId [iPDK_getCurrentInst] if {[iPDK_isSchematic $instId]} { set viewType "schematic" } else { set viewType "maskLayout" }
An other known problem is that some founderies use an extended Tcl API and implement these extended calls for some tools. So the 'iPDK' becomes incompatible to other tools. The extensions needs to implement for the LayoutEditor was well to use the iPDK. As an example for this problem the TowerJazz iPDKs use an API call iPDK_getParamList which is not part of the original iPDK specification. To use this iPDK with the LayoutEditor an additional Tcl file had to be included into the callback folder: TowerJazz-extended-iPDK.tcl This file implements the additinal API with the LayoutEditor. If you need any help to extend your iPDK for the LayoutEditor, do not hesitate to contact the LayoutEditor support. The extension may already exists, but cannot be published on the web.
A further known problem is that the iPDK may use parameter which are defined outside the iPDK/OpenAccess database. (e.g. in a tool specific start script) These parameter needs to be defined for the LayoutEditor as well. This can be done with a Tcl command in any callback Tcl file:
iPDK_setGlobalParameterValue parameter value
A further problem can appear, if the foundery use encrypted callback files. In this case the callback path must point the a TCL loading script for the encrypted files and not the encrypted files itself. Also the loading TCL script may use an encryption library which requires additinal libraries to be installed on your system. That can be tested with the linux command ldd ./Tcl/encrypt/lnx64/libipdk.so (the file is the encryption library). If any library is not found install it on your system. E.g. on Ubuntu with sudo apt-get install tcl8.4 libstdc++5 to install version 8.4 of the Tcl library and version 5 of the libstdc++ library.
Setup Layer
The LayoutEditor can load the layer setting from different type of files including common file type used by OpenAccess/iPDK. It can be loaded from the OpenAccess tech.db file, Santana.tech and from the layer.map file. The layer definition files used can differ in different iPDK databases. To import the layer setting open the LayerManager, press the little '+' in the lower left and choose Import Layer Settings.