next up previous contents index
Next: CadenceTM Compatibility Up: Synopsys (Ciranova) PyCell Studio Previous: Synopsys (Ciranova) PyCell Studio   Contents   Index

Connecting to PyCell Studio

This section describes how Xic can directly interface to the PyCell Studio example library and technology. PyCells from the library, or authored by the user, can be instantiated in Xic cells.

It will be assumed in this discussion that the PyCell Studio has been downloaded from Synopsys, and installed on your system, which also has Xic installed. The PyCell Studio works with Red Hat Enterprise Linux releases 5 and 6 (and equivalent). You must choose the same word size (32 or 64 bits) as your Xic installation. The installation location for PyCell Studio is selected by the user, and we will refer to this location as ``$CNI_ROOT''. For example, $CNI_ROOT might be /usr/local/ciranova.

Although your system will almost certainly have Python installed, it appears necessary to use the Python provided with the Studio. In Red Hat EL6, the Ciranova and stock Python version numbers are the same, but the libraries are apparently built with different options, and attempts at using the stock Python have failed (perhaps Synopsys will fix this?). You can, however, use your own OpenAccess installation if you have one and it is reasonably recent. You can probably also use OpenAccess from Cadence.

The first step is to make sure that the PyCell Studio installation is correct by following the steps in the $CNI_ROOT/quickstart/README.txt file.

Part of this procedure (step 3) is to source one of the startup files provided. This step sets the value of several environment variables, and forces the system to find the Ciranova Python instead of a local Python. It also installs the OpenAccess plug-in for Python. The user can customize this script if desired. It is necessary to source this file, or otherwise setup the environment as per the file, before starting Xic. After finishing, you will want to revert the environment to the previous state. Unfortunately, this is difficult. You may kill the window and start a new one.

A better way to run Xic in the Ciranova environment would be to write a script such as the following. Call it ``xic.cni''.

#! /bin/sh

CNI_ROOT=/usr/local/ciranova
source \$CNI_ROOT/quickstart/bashrc; xic -Tcni \$*

The CNI_ROOT line should be changed to the actual Ciranova installation location. After creating the file, make it executable with

chmod 755 xic.cni

Then, to run Xic in the Ciranova environment, just run this script instead. Since it runs in a sub-shell, the environment of the main shell is not corrupted. Any command line arguments are passed through.

Note that above Xic is started with a ``-Tcni'' option, which specifies to use the xic_tech.cni example technology file provided with Xic. This uses the ReadDRF and ReadCniTech directives to read display resource and technology files from the Ciranova installation. However, Ciranova provides a number of technology files, any you may want to try them. You will probably want to copy the xic_tech.cni file to your local directory, so that it can be edited easily.

Finally, you will need to set up your OpenAccess lib.defs to include the Ciranova libraries. The lib.defs file is a listing of the OpenAccess libraries available, very similar to the cds.lib file in Cadence. If no lib.defs file exists in the current directory, using a text editor create the file with a single line

INCLUDE path/to/ciranova/quickstart/lib.defs
The path/to/ciranova is the installation location, what we have called $CNI_ROOT. If there already is a lib.defs file, the line above should be added.

Once setup is complete, we can test it.

  1. prompt> ./xic.cni
    Xic should start, and the ``Using OpenAccess'' and ``Using Python'' messages should appear in the console. The layer table will show perhaps unfamiliar layers, these have been obtained from the Ciranova technology file. There shouldn't be any error or warning message pop-ups.

  2. Switch the editing context to a new, empty cell, if the current cell is not empty or is otherwise of value.

  3. Click the OpenAccess Libs button in the File Menu, which will exist if OpenAccess is connected (the ``Using OpenAccess'' message appeared). This will bring up the OpenAccess Libraries panel. The following libraries will be listed.
    IPL_cni130
    cnVPcellLib

  4. Click on the IPL_cni130 line to select it, and press the Contents button. The Listing panel should appear, loaded up with names.

  5. In the Contents, find the Nmos2 entry, and click on it to select it.

  6. Press the Place button in the Contents listing. The Cell Placement Control panel will appear. Press the Place button in this panel, and the Parameters pop-up will appear. There will be a double-line box ``attached'' to the mouse pointer.

  7. Have a quick look at the Parameters panel. These are the pcell parameters that can be set. Feel free to enter some new values. The documentation for the Nmos2 pcell will explain what the parameters are, though a few, such as fingers, l, and w, are obvious.

  8. Click anywhere in the drawing window to place an instance. You should expand the view to show the instance content, press Ctrl-x for this. You can place more instances, perhaps with different parameters set. Press the Esc key when done.

  9. Click on one of the instances to select it. Note that some of the sides of certain features are highlighted. These are stretch handles that can be dragged, to change the size of the feature. Try dragging a handle and note the effect.

  10. Place a second instance of Nmos2 so that it doesn't overlap ther first.

  11. Move the second instance, place it so that one of the S/D contacts overlaps a contact of the first instance. Note that the overlapping contact has disappeared in both instances. This is auto-abutment. the two instances can be repositioned so as to exactly share the common edge, which implements a dual-gate transistor.

  12. Press the PCell Control button in the Edit Menu, which will display the PCell Control pop-up. In the pop-up, change the Auto-abutment mode to Mode 2 (with contact).

  13. Move one of the cell instances well away from the other, note that both instances revert to the original form. Now drag and drop one of the instances over the other so that they share a contact, as before. This time, however, note that a common contact is retained.

This should be enough to get started, have fun!


next up previous contents index
Next: CadenceTM Compatibility Up: Synopsys (Ciranova) PyCell Studio Previous: Synopsys (Ciranova) PyCell Studio   Contents   Index
Stephen R. Whiteley 2022-05-28