EEL 6323    Spring 2005    UF
Quick-Start Guide

Getting Started

Running Cadence
Cadence is a commercial UNIX application licensed to UF for academic use.  It can only execute on a machine running the UNIX operating system and is not available for installation on personal machines.
With that said, you can still use Cadence on a PC via a remote connection (toons.ecel.ufl.edu) in conjunction with X server software (Cygwin).
All PCs in the 2nd floor NEB computer lab already have Cygwin installed.  Directions for usage can be found here.
Cygwin is also available as freeware for installation at home.  Their website is http://www.cygwin.com/.
UF engineering students have three options for running cadence:
Natively on the Sun workstations in the 2nd floor NEB computer lab (easiest, most direct method)
Remotely on the PC workstations in the 2nd floor NEB computer lab using Cygwin (more difficult, slightly slower method)
Remotely on a home workstation (most flexible, but somewhat slower method)
Only consider this option if you have broadband as Cadence requires a lot of display information to be passed back and forth.
Click here for Step-by-Step Remote Setup instructions.
Using UNIX
Since Cadence is a UNIX application, you’ll want some minimal proficiency using the operating system.  The basic interface to UNIX is the shell, which is a command-line interpreter similar to DOS.  You’ll use the shell to organize your files, perform basic file maintenance, and launch the Cadence application.
If you’ve never used UNIX, several online tutorials exist to get you up to speed.  Here are a couple:
Tutorial #1
Tutorial #2
Setting Up Cadence
You should be able to run Cadence without any special setup process.  However, if you want to customize the environment and/or the way Cadence starts, you can copy the following files to your home directory and change them accordingly (consult the Cadence online documentation for more info):
/usr/local/cadence/local/.cdsenv - environment settings
/usr/local/cadence/local/.cdsinit - initialization settings
/usr/local/cadence/local/cdssetup/cds.lib - library index
The cds.lib file becomes important if you want access to additional technologies that are not part of the default Cadence installation. A technology is a collection of device parameters, models, and fabrication data that is available to Cadence for use in designs.  Using the default library list is fine, but if you need access to additional technologies, you will need to manually add them to the cds.lib file.
The following environment variables should already be set by your default shell profile, but if you encounter trouble running Cadence, you can double-check to make sure they are set correctly.
CDS_INST_DIR=/usr/local/cadence/ic50
To verify, enter echo $CDS_INST_DIR
To set, enter export CDS_INST_DIR=/usr/local/cadence/ic50
PATH should include /usr/local/bin
To verify, enter echo $PATH
To set, enter export PATH=$PATH:/usr/local/bin
Starting Cadence
To start Cadence, type icfb from a shell window.  If you are starting a new project, you may want to create a fresh directory and switch into it first; this will keep your work for different projects separate.  If you are continuing work on an existing project, change to the appropriate directory before starting.
When Cadence starts up, two windows should appear (if they don't and you're running on a PC, it most likely means there's something wrong with your remote setup):
icfb Log - all output from the various Cadence commands go to this window; when in doubt as to whether or not something worked or to obtain more information on why something didn't work, check the information in this window.  Also, there is a command prompt available at the bottom of this window by which you can directly enter commands if necessary (not used very often).
Library Manager - this window shows the contents of your current project.  You should see three sub-panes labeled Library, Cell, and View, corresponding to the different levels of project hierarchy used by Cadence.
Library - this is the top level of hierarchy; a library contains one or more cells.  An entire project may be contained in a single library or could be divided across several.  One useful method is to place all production (i.e. finished) cells in one library and all testing cells in another.  Also, the design technologies used by Cadence are organized as individual libraries (i.e. a particular technology has a single library that defines it).
Cell - this is the smallest design unit of self-contained functionality that, collectively, defines the contents of your project.  Common fundamental cells might be an inverter, two-input NAND gate, etc.  Cells can themselves be defined in terms of other existing cells (another form of hierarchy supported by Cadence; more on this later).  A cell has one or more views that define it.
View - this is where you define the behavior of your cell.  Many different types are possible, only some of which we will be interested in.  They are listed below:
Schematic - transistor-level (usually) diagram of the cell; designed using the Composer tool
Symbol - single block that can be used by other cells; the top-level interface signals of the cell are present as pins in the symbol; designed using the Composer tool
Layout - physical-level diagram of the cell; designed using the Virtuoso tool
Extracted - physical-level diagram of the cell containing explicit indication of all well-formed transistors and all layout-related parasitics; automatically generated by the extraction process

Starting a Project

Starting a New Project
To start a new project, first create a library.  Click on File->New->Library within the Library Manager window.

Once you have selected and entered a name for the library, click on the Attach to existing tech library button.  In the drop down menu list to the right, several technologies should appear as shown below.  These technologies were obtained from the cds.lib file (either the default or one you modified).


NOTE: Selecting the right technology to use for your design is crucial!!

Not all technologies have full Cadence support for all tools (schematic, simulation, layout).

Changing tech libraries after you have started is possible, but often leads to unexpected behavior -- it is much better to choose the right one from the start.

A suitable technology for basic CMOS design which has been tested and verified to work is Agilent's HP 0.60u AMOS14TB.  This technology is a 3.3V CMOS n-well process containing 3 metal layers and 1 poly layer.  Additional information on the technology is available from MOSIS here.

Feel free to experiment with other technologies.  However, it is always a good idea to perform a basic sanity test (e.g. an inverter) with the technology before investing a lot of design time.

Once you are happy with your selections, click OK to create the library.

Creating a New Cell View

To create a new cell view, verify your desired library is highlighted in the left pane and click on File->New->Cell View within the Library Manager window.

If the cell view is for an existing cell, verify its name is listed in the Cell Name box of the Create New File window that appears (or enter it if it is not).  If the view is for a new cell, enter the desired cell name in the box.

Then select the desired tool from the drop-down list: Composer-Schematic for a schematic, Virtuoso for a layout; these are the two primary tools you will be using in this course.

Once the tool is selected, the View Name box contents will adjust automatically to match.  There is no need to change the contents of this field unless you intend to have multiple view of the same type for a single cell (unlikely except in unusual circumstances).

Click OK to create the cell view.  The corresponding tool will automatically open to edit the new view.

Other Cell Operations

To open an existing cell view, simply double-click on its view name within the Library Manager.

Cells can be copied, moved, and deleted within a library and between libraries as needed.  Right-click on the desired cell for these additional options, or select them from the Edit menu of the Library Manager.

The Design Process

Process Design Flow

Basic digital CMOS design can be done in the following steps with Cadence:

  1. Design a transistor-level schematic of your cell using Composer; make use of global supply nets such as VDD and GND, but do not include any stimulus in your circuit (i.e. voltage sources, etc.).

  2. Make a symbol of your cell via Composer.

  3. Create a new testing cell with a schematic view that instantiates one instance of the symbol you made in step 2 along with any external sources required for stimulus.  Don't forget to define VDD with a DC source.

  4. Simulate the testing cell using Spectre/SpectreS (depending on technology) to verify base functionality.  This stage can also be used to obtain proper relative transistor sizings for each of the gates in your design.

  5. Layout your cell from step 1 using Virtuoso, running the Design Rule Check (DRC) tool frequently to verify your layout complies to the restrictions mandated by your technology.

  6. Run the Extract tool on the finished layout to create an extracted cell view.

  7. Open the extracted cell view and run the Layout Versus Schematic (LVS) tool to guarantee your views are functionally identical.  Revise your layout as needed until the netlists match.

  8. (Optional) For our purposes, we can usually stop here for most designs.  At this point we have designed, simulated, laid out, and verified our cell.  However, we have not yet simulated our circuit with the parasitic effects of the layout included in the analysis.  A poor layout can detrimentally effect the dynamic performance of our circuit, and in extreme cases, cause our design to fail.  A final step is to re-extract the layout with parasitic effects included and re-simulate the testing cell using the extracted data instead of the schematic data.

  9. Repeat steps 1-8 for all additional cells in the design.  Take advantage of hierarchy to minimize your work and maximize your efficiency.

Using Schematic Composer

Designing a schematic using the Composer tool consists of the following steps:

  1. Enter instances of all components required by the cell (transistors, passive devices, and other user cells).

  2. Wire components together.

  3. Add I/O pins.

  4. Check and save.

To enter a component instance, click on Add->Instance.  Most common options in Composer have a shortcut button on the left-hand side and a shortcut key in addition to being listed under one of the menus.

This will bring up the Component Browser window.  First select the library from which you would like to select a component.  Occasionally, the technology library you are designing with will have custom parts available in Composer that you can use.  However, most often they will not, and you will instead want to use the components in the NCSU_Analog_Parts library.  When you select a component from the analog parts library, Cadence will automatically associate the appropriate model from your technology library with the part if it is available.  Below is a list of the NCSU_Analog_Parts components you will most often deal with:

N_Transistors->nmos4 - 4-terminal standard NMOS transistor; in general, you will want to use the 4-port version so that you can explicitly include your substrate connection; this will be important when running the LVS tool.

P_Transistors->pmos4 - PMOS counterpart of the nmos4 part

R_L_C->res - resistor

R_L_C->cap - capacitor

R_L_C->ind - inductor

Supply_Nets->vdd - global VDD terminal

Supply_Nets->gnd - global GND terminal

Voltage_Sources->vdc - DC voltage source

Voltage_Sources->vpulse - pulse voltage source (i.e. square-wave)

Voltage_Sources->vpwl - piece-wise linear voltage source, useful for driving digital circuits with arbitrary bit vectors (e.g. 100111011001...)

Voltage_Sources->vsin - sinusoidal voltage source

Once you've selected the part, you can modify its properties in the Add Instance window before clicking on the schematic to place the part.  In particular, you can set the W/L ratios of your NMOS and PMOS transistors if necessary.

When you're done placing all your parts, enter Esc to exit the add instance mode.  In general, hit Esc anytime you want to stop what you're currently doing and return to normal mode.

To wire your parts together, click Add->Wire (narrow) from the menu bar, or click on the wire tool button on the side (or use the shortcut key w).  Click on the terminals of your components to route wire between them.  Press Esc when you are finished.

To add your I/O pins, click Add->Pin and enter one or more names in the Pin Names box separated by spaces.  One by one, select the appropriate directivity for the pin from the drop-down list and then click on the schematic to place the pin.  Hit Esc when you are done.

Click Design->Check and Save to save your work.  If there are any errors or warnings, check the Log window for more information.

Creating a Symbol

coming soon...

Simulating Your Schematic

coming soon...

Using Virtuoso

coming soon...

Extracting Your Layout

coming soon...

Running LVS

coming soon...

Simulating Your Layout

coming soon...

Submitting Your Layout

When you are completely finished with your layout, you can export your design into a single file for easier electronic submission (e.g. for fabrication, or, in our case, for grading).  There are several standard file formats used in the industry; we will be using the GDS II stream format, which is a binary format.

To generate the output file, select File->Export->Stream from the Log window.  In the window that appears, click on Library Browser and select the library and cell corresponding to the design you wish to export.  Then select a name for the output file, preferably your last name, followed by an underscore, and then your first initial, for identification purposes.  When you are done, click OK.  A sample dialog window is shown below.

Check the Log window for the results of the export process.  There may very well be one or more warnings generated which should be able to be ignored safely.  Just double-check that no errors occurred and that the output file was created and is of reasonable size (on the order of a few kilobytes for small designs).  If you want, you can re-import the stream file you just created to verify the layout information is intact.

The stream file can now be sent electronically as an e-mail attachment.

Additional References

Excellent 3-part tutorial of an inverter from Michigan State University:
Tutorial A - Schematic Entry
Tutorial B - Layout
Tutorial C - Timing Simulation
 

Questions/Comments/Corrections?  E-mail cmcglone@ufl.edu.