Readme for Cadence IC61 examples downloaded from

Cadence Version: IC61

Spectre (Cadence’s name for their SPICE) Version: MMSIM61

Design kit: ncsu-cdk-1.6.0 beta


To use the Cadence IC61 examples from follow these steps.


1. Download the NCSU Cadence Design Kit (CDK) version 1.6.0 beta from


2. To install the NCSU CDK:

  • Extract the contents of ncsu-cdk-1.6.0.beta.tar.gz into your home directory, $HOME
  • In your home directory open the .bashrc file (ensure that you can view hidden files and assuming that you are using the Bash shell) and add the following lines


export CDS_Netlisting_Mode=Analog

export CDS_LOAD_ENV=CWDElseHome

alias C5='export CADENCE=IC5141; export PATH=`echo $PATH | sed s/IC610/IC5141/g`; export CDK_DIR=$HOME/ncsu-cdk-1.5.1'

alias C6='export CADENCE=IC610; export PATH=`echo $PATH | sed s/IC5141/IC610/g`; export CDK_DIR=$HOME/ncsu-cdk-1.6.0.beta'

      • make sure that the above installation directories/names are consistent with your setups (here is an example .bashrc file)
      • note that only one CDK_DIR directory can be exported (not to be confused with CDS_DIR)
      • when finished, in a terminal window in your home directory, type the command “. .bashrc” (period, space, period bashrc) to re-source the .bashrc file
      • the above aliases allow the user to switch back and forth between Cadence versions IC51 and IC61
      • if using IC610 (only) add:

export CDK_DIR=$HOME/ncsu-cdk-1.6.0.beta

to the .bashrc (don’t add the two alias lines seen above)

  • Make a working directory in your home account called CMOSedu
  • Copy everything in the directory $HOME/ncsu-cdk-1.6.0.beta/cdssetup into $HOME/CMOSedu
  • In the working directory CMOSedu, rename cdsinit, simrc, and cdsenv to .cdsinit, .simrc, and .cdsenv (add a period)
  • Finally, open the file cds.lib and add the following lines to point to the built-in Cadence libraries

DEFINE analogLib /usr/local/Cadence/$CADENCE/tools.lnx86/dfII/etc/cdslib/artist/analogLib

DEFINE functional /usr/local/Cadence/$CADENCE/tools.lnx86/dfII/etc/cdslib/artist/functional

DEFINE sbaLib /usr/local/Cadence/$CADENCE/tools.lnx86/dfII/etc/cdslib/artist/sbaLib

      • make sure that the above installation directories/names are consistent with your installation (verify that the path is correct noting $CADENCE=IC610)
      • if using IC610 (only) then $CADENCE in the above definitions should be replaced with IC610


3. Unzip the Cadence examples from into $HOME/CMOSedu and then define the path to these examples in the cds.lib file

  • For example, unzip into $HOME/CMOSedu
  • Add the following line to the $HOME/CMOSedu/cds.lib file
    • DEFINE Ch1_IC61 $HOME/CMOSedu/Ch1_IC61
    • Note that if you also have IC51 examples in this directory, and defined in the cds.lib file, they will show up in the 6.1 Library Manager; however they can’t be used
    • This text file may prove useful if downloading all IC61 Cadence examples.


4. Repeat step 3 for every or downloaded from CMOSedu.


5. When finished open a terminal window, navigate to the working directory CMOSedu, enter “C6” and then enter "virtuoso &" to start Cadence

  • Entering “C5” in a terminal window will cause the command “icfb &” to run IC51 while entering “C6” will cause “icfb &” to run IC61
  • Note that icfb has been replaced with virtuoso in IC61; however, icfb will still start Cadence in the first release of IC61


Instructions for using Cadence examples from

  • With Cadence running use the Library Manager to open the schematic view of a cell for simulation using Virtuoso Schematic Editor (SE)
  • In the menu of the SE Window select Launch -> ADE L to open the Virtuoso Analog Design Environment (ADE) Window
  • In the ADE Window’s menu select Setup -> Simulator/Directory/Host… and then set the Simulator menu item
    • for most simulations Spectre will be used, if UltraSim or some other simulator is used it will be noted on the schematic
    • to make Spectre the default simulator used by Analog Artist add envSetVal("asimenv.startup" "simulator" 'string "spectre") to the bottom of your .cdsinit file in CMOSedu
  • Next, again in the ADE Window’s menu, select Session -> Load State
    • set the Load State Option to Cellview and press OK
  • Finally, in the ADE Window’s menu select Simulation -> Netlist and Run (or just hit the green button) to simulate


If the examples are not placed in $HOME/CMOSedu then, to run a simulation in the ADE, the location of the models will need to be specified after the state is loaded.

  • In the ADE window select Setup -> Model Libraries then browse to the model file location (/path/ChXX_IC61/name.txt) and press Add


Finally, if you are using Matlab Spectre’s Toolbox (for determining SNR from the KD1S in Ch. 9 of the mixed-signal book) ensure that something similar to the following is added to the .bashrc file.



export PATH=$PATH:/usr/local/MATLAB/R2010b/bin


#MATLAB Spectre Toolbox

export LD_LIBRARY_PATH=`cds_root spectre`/tools/dfII/lib:`cds_root spectre`/tools/lib/64bit

export LD_LIBRARY_PATH=`cds_root spectre`/tools/spectre/matlab/64bit:${LD_LIBRARY_PATH}

export MATLABPATH=`cds_root spectre`/tools/spectre/matlab/64bit


See the links to Cadence Tutorials at for general help with using Cadence







































Notes for converting from IC51 to IC61 when using the NCSU CDKs


1. Make a folder called oa_convert in your home directory
2. In this folder make a file called cds.lib and put the following in it

DEFINE      basic                   $CDK_DIR/lib/basic
DEFINE      NCSU_Analog_Parts       $CDK_DIR/lib/NCSU_Analog_Parts
DEFINE      NCSU_Digital_Parts      $CDK_DIR/lib/NCSU_Digital_Parts
DEFINE      NCSU_TechLib_ami06      $CDK_DIR/lib/NCSU_TechLib_ami06
DEFINE      NCSU_TechLib_ami16      $CDK_DIR/lib/NCSU_TechLib_ami16
DEFINE      NCSU_TechLib_hp06       $CDK_DIR/lib/NCSU_TechLib_hp06
DEFINE      NCSU_TechLib_tsmc02     $CDK_DIR/lib/NCSU_TechLib_tsmc02
DEFINE      NCSU_TechLib_tsmc02d    $CDK_DIR/lib/NCSU_TechLib_tsmc02d
DEFINE      NCSU_TechLib_tsmc03     $CDK_DIR/lib/NCSU_TechLib_tsmc03
DEFINE      NCSU_TechLib_tsmc03d    $CDK_DIR/lib/NCSU_TechLib_tsmc03d
DEFINE      NCSU_TechLib_tsmc04_4M2P    $CDK_DIR/lib/NCSU_TechLib_tsmc04_4M2P

3. In your home directory make a file called cds_convert.lib with the same contents as the cds.lib file above but, in addition, add the path with the library name you want to convert. For example,

DEFINE Ch23_IC51 $HOME/CMOSedu/Ch23_IC51

4. Ensure that you enter C6 above to set the CDK path and version (IC61) correctly. To convert the library from IC51 to IC61 enter, in the oa_convert directory and in a terminal window, 


cdb2oa -cdslibpath ~/cds_convert.lib -lib Ch23_IC51


If this command doesn’t work ensure that you have the alias and CDK set for version IC61 (see number 2 at the top of the page). The converted library is placed in oa_convert and keeps the same name, in this example, Ch23_IC51.


Move the converted library to CMOSedu and rename it using IC61’s Library Manager.

To run the simulations you will have to change the models path from


$HOME/CMOSedu/Ch23_IC51/cmosedu_models.txt to $HOME/CMOSedu/Ch23_IC61/cmosedu_models.txt


The examples from are available in both IC51 and IC61 flavors so this information is simply for reference.