Note: $cdk_dir == toplevel directory of NCSU CDK
This document contains the following sections:
NCSU provides a set of tech files for the SCMOS design rules provided by MOSIS. These were originally based on a set published by MIT but have been heavily expanded and updated for 4.4. The tech files define layer names, DRC and extraction rules and various other things.
For each process, the CDK includes a ``technology library'' against which design libraries can be linked. These technology libraries contain all the information held in the technology files and so eliminate the need for the design library to duplicate this information. The technology libraries are named ``NCSU_TechLib_xxxYY'', where ``xxx'' is an abbreviation of the foundry name, and ``YY'' is the minimum device length in microns, e.g., NCSU_TechLib_ami16 is for the AMI 1.6um process. Another string may optionally be appended to the library name if necessary, e.g. NCSU_TechLib_tsmc04_3M2P, where the _3M2P marks this as the three-metal, two-poly variant of the TSMC 0.4um (drawn) process.
The technology files which contain the ``controls'' class for each process are stored in the $cdk_dir/techfile directory. The files are named according to the template ``vendor_Ldmin.tf''. The current list of active process techfile stubs is:
ami_06.tf ami_16.tf hp_04.tf hp_06.tf tsmc_02.tf tsmc_03.tf tsmc_04_4m.tf tsmc_04_4m2p.tf
(Note that the TSMC 0.4um process has two distinct variants, because different mask layers are available depending on which variant is used.)
Note for 0.99.X users: The old technology library names, e.g., hp14_TechLib, have been kept for backward compatibility with existing designs. All files from the current technology library are linked to the old library. For example, in the directory hp14_TechLib are symbolic links to all files in the (current) directory NCSU_TechLib_hp06. This way, any design that references an instance from hp14_TechLib will still find it, even though the reference points (via the link) to NCSU_TechLib_hp06. In case you're wondering why we didn't simply make hp14_TechLib a link to NCSU_TechLib_hp06 itself, that would confuse the Library Manager, since there would be two libraries pointing to the same directory.
The control class defines the parameters ``lambda'' and ``technology'' for each process. Additionally, it defines the following parameters on a process-by-process basis:
elecAvailable - if elec (poly2) is availablenpnAvailable - if pbase (for NPNs) is available
ccdAvailable - if ccd is available
metal3Available - if metal 3 is available
metal4Available - if metal 4 is available
metal5Available - if metal 5 is available
metal6Available - if metal 6 is available
metalcapAvailable - if metalcap is available
cwellAvailable - if linear thin-ox capacitors are available
polyCapAvailable - if second poly for capacitors is available
memsAvailable - if MEMS layers are available
sblockAvailable - if silicide block (for poly resistors) is available
highresAvailable - if high resistance poly2 implant is available
hvAvailable - if thick active (for high-voltage transistors) is available
See our list of layers and optional process features.
The technology files use these parameters to include rules for these optional layers only if they are available. This avoids the temptation for designers to attempt to place layers in their designs when that layer is not available for the given process.
The remaining tech files are loaded by the ``Create Library'' form.
geomConnect()
section to
divaLayerDef.il, in the
$cdk_dir/techfile directory
NCSU_hiliteExcludeList[ "via5" ] = t
let
). Add the code for any new
symbolic device necessary, and add the new symbolic name to
symList
at the top of
$cdk_dir/skill/menus/ciw/createLib.il.
let
). Add the new layer to
techLayers()
. Add the code to load the new
layerDefn* file. Add the new layer characteristics to
techDisplays()
. Add the parasitic info for the new process
if necessary.
let
. Add
whatever layer-dependent code is necessary.
let
). Add any necessary derived
layer definitions. Add a new geomConnect
case, if
necessary. Add dubiousData
, geomGetNon45
and
offGrid
checks for the new layer. Do the edge
derived layer for the new layer.
let
). Add the new layer to the
streamLayers() class (required) and to the viaLayers()
class (if necessary).
let
). Add the new layer to
dleExtractLayers() and dlrRoutingLayers if
necessary.
let
). Add the new layer rules
to orderedSpacingRules
and spacingRules
if
necessary.
The NCSU CDK is Copyright © NC State University, 1998, 1999, 2004, 2006. Users are free to use or modify the NCSU CDK as appropriate as long as this notice appears in the modified package. The NCSU CDK is provided with NO WARRANTY.