About Matt Clapp's mosisLib
This mosisLib library is heavily and shamelessly based on
Prof. Cauwenbergh's 'mosisLib', with a few fixes and changes. It is
intended as a (virtually) drop-in replacement for analogLib.
Instead of using
width, length specified in microns, you specify width, length in units of
lambda. That way, you can copy your library that instances mosisLib,
change the global library 'lambda' CDF parameter, and automatically your
schematics reflect your new process lengths and widths.
For the whole scheme to work:
- Untar the mosisLib library and add it to your 'cds.lib' file.
- Use the command 'tar -vxzf mosisLib.tar.gz' in the
directory where all of your cadence library directories are kept.
This will create the directory 'mosisLib' which contains the
mosisLib library.
- Then, modify the file "cds.lib" to have a new entry. The new
line should be
'DEFINE mosisLib {directory}/mosisLib',
where {directory} is the path of the directory containing
your mosisLib directory. Look at the other lines in cds.lib for
examples. You may have to add the line 'UNDEFINE mosisLib'
before this definition to undefine a previously-defined mosisLib
library.
- Create a CDF variable "lambda" for your library
(not for mosisLib itself.)
- In the CIW, go to Tools->CDF->Edit...
- Select 'library' and type the name of your library.
- Also select 'Base' for the type of variables you will be
modifying.
- Finally, add a variable called "lambda" and set it
to your lambda size, in meters. (so for lambda=0.35um, you would set
your lambda variable to 3.5e-7)
- Don't change existing analogLib instances to mosisLib by simply changing
their properties sheet 'Library' entry. This will cause property
values that shouldn't be changed in the mosisLib cell to have your old
analogLib property values, messing a lot of stuff up. Make a new mosisLib
instance and write in the width, length, values by hand.
Some caveats:
- For some reason, Cadence analog simulation doesn't seem to like
netlisting a schematic with
a mosisLib instance in the top level. It gets confused about the lambda
parameter and tries to make it a simulator variable. For simulation,
you need to instance your cell in another schematic that doesn't contain
any mosisLib transistors in the top level.
- mosisLib displays width on top of length for MOS transistors. This is
really how things should be, but if you're used to the stupid Cadence
way of seeing length displayed on top of width, you'll have to mirror
the transistor if you still want this broken behavior. mosisLib does put
a "W" next to the width, and a "L" next to the length, so things aren't
really that difficult to understand anyway.
A screenshot:
m c l a p p at j h u dot e d u