====== Design hierarchy in Cadence IC (Virtuoso) ======
[ __[[vlsi:home|Home]]__ ]
[ __[[vlsi:workbook|Design WorkBook]]__ ]
[ __[[vlsi:workbook:analog#contents|Back to index]]__ ]
== Contents ==
* Introduction
* Libraries
* The ''cds.lib'' file
* Cells
* Cell views
* Using the Library Manager
* Creating a new library
* Creating a new cell
* Opening an existing cell
* Copying and deleting
* Managing libraries with the Library Path Editor
* Cadence default libraries
**Keywords:**
===== Introduction =====
**bottom-up** design approch, from the transistor level a blocks
poi riutilizzati e cosi' via in un disegno gerarchico
===== Libraries =====
\\
**Standard Cadence libraries**\\
tra cui la **analogLib** which contains **ideal components** such as
ideal R, L, C, both independent and controlled voltage/current sources
\\
**Technology libraries**\\
provided by the process design kit (PDK)
Tipicamente ce ne sono diverse! la **standard library** con transistors, diodes,
capacitors, resistors etc. ma poi ci sono anche one ore more **digital libraries**
cosi' come chip-level structures such as **input/output pads**, **power/ground pads**
or **electrostatic discharge (ESD) protections**, **guard rings** etc.
\\
**User libraries**\\
Tutte le altre custom libraries created by the user, che contengono **instances**
of both Cadence and PDk libraries
\\
Cosa fondamentale, dal punto di vista UNIX sono **UNIX directories**
===== The cds.lib file =====
IMPORTANTE! Sarebbe cosa buona e giusta avere due ''cds.lib'' distinti,
uno nella home con le librerie cadence e uno nella working directory
che include gli altri
# standard Cadence libraries
INCLUDE $ID_DIR/../cds.lib
# PDK libraries
INCLUDE /path/to/technology/cds.lib
# user libraries
DEFINE libName /path/to/libName
DEFINE ... ...
per convenzione le user libraries vanno in una ''lib'' or ''libs'' directory
in the working directory,
cd ~/scratch/
mkdir lib
Nel caso del tutorial una ''~/scratch/tutorials''
cosi' nel cds.lib sara' del tipo
DEFINE libName /export/eltxxxx/disk0/users//scratch//lib/libName
===== Cells =====
Cosa fondamentale, dal punto di vista UNIX sono **UNIX directories**
===== Organizing libraries with categories =====
[[http://www.ece.rice.edu/~cavallar/cadence/tutorial/library.html]]
**File -> New -> Category ...**
Show categories
===== Cell views =====
**schematic**\\
**symbol**\\
**layout**\\
**behavioral**\\
**extracted**\\
si tratta della **extracted netlist**
Assura produce una cell view named //av_extracted//,
Calibre una cell view named //calibre//
**abstract**\\
Fondamentale se si lavora con **standars cells** released by a manufacturer as
analog or digital **[[http://en.wikipedia.org/wiki/Semiconductor_intellectual_property_core|intelletual property (IP) blocks]]**,
in pratica non vedo dentro come e' fatto il layout
ma solo i pin di collegamenti
**adexl**\\
advanced simulations such as **corner analysis** and **Monte Carlo simulations**
in **Virtuoso ADE XL** e gli stati sono salvati in a particular cell view of the type //adexl//
**text**\\
posso includere file plain text per la documentazione direttamente nella cella!
File => New => Cell View e poi scelgo come Type **text**
\\
dal punto di vista UNIX sono **UNIX directories** anche queste messe in ''./lib/libName/cellName/viewType''
e.g. ''./lib/libName/cellName/schematic'' or ''./lib/libName/cellName/layout''
poi dentro questa directory ci sono specific Cadence files.
===== Using the Library Manager =====
===== Creating a new library =====
''libraryName/cellName/cellviewName''
Library Manager (LM)
types of libraries: Cadence libraries, technology libraries and user libraries
tools e' un link simbolico alla directory tools.lnx86
**CIW => Tools => Library Manager...**
{{:vlsi:library_manager.png?750}}
**LM => File => New => Library... **
**New File** window
{{:vlsi:new_library_getting_started.png}}
**Technology File for New Libarary** window
{{:vlsi:technology_file_for_new_library.png}}
//Do not need process information//
Se invece si runna il tutorial attaccandosi alla 130 nm scegliere
//Attach to an existing technology library//
e poi selezionare **cmrf8sf**
Important! **attach vs. referencing** !!!
attach = **static** technology database
reference = **incremental technology database (ITDB)**
For example, if you have to add a custom via or routing constraint
you must modify this main PDK which may cause problems for other users.
An ITDB is more flexible because updates can be made directly to the ITDB without effecting the base PDK.
You can also define multiple ITDBs which reference the same base PDK.
===== Creating a new cell =====
===== Opening an existing cell =====
Attenzione anche alle **permissions!** Io una cell la posso anche aprire
da un collega ma solo in **read-only mode** ! (as a matter of fact a cell view is a UNIX file
and follows standard UNIX files rules). Solo se e' nella mia local area
la posso aprire in **edit mode**, pero' posso sempre fare una copia locale
della cella
===== Copying and deleting =====
Per poter editare libraries and cells placed outside your local area
(e.g. you want to use a building block implemented by a collegue)
you have to make **local copies** of them perche' non si hanno UNIX write permissions
quindi un
cp -r /path/to/libName ~/scratch//lib/libName
or
cp -r /path/to/cellName ~/scratch//lib/libName/cellName
Oppure uso il Library Manager, pero' la libreria che voglio copiare
deve essere nel ''cds.lib'' perche' sia visibile
===== Managing libraries with the Library Path Editor =====
Solo per dire che il ''cds.lib'' file lo posso editare anche via GUI
====== Cadence IC default libraries ======
Defined in the default ''cds.lib'' file
''$IC_DIR/tools/dfII/local/cds.lib''
DEFINE analogLib $IC_DIR/tools/dfII/etc/cdslib/artist/analogLib
DEFINE functional $IC_DIR/tools/dfII/etc/cdslib/artist/functional
DEFINE sbaLib $IC_DIR/tools/dfII/etc/cdslib/artist/sbaLib
DEFINE basic $IC_DIR/tools/dfII/etc/cdslib/basic
DEFINE US_8ths $IC_DIR/tools/dfII/etc/cdslib/sheets/US_8ths
--
DEFINE aExamples $IC_DIR/tools/dfII/samples/artist/aExamples
DEFINE ahdlLib $IC_DIR/tools/dfII/samples/artist/ahdlLib
DEFINE bmslib $IC_DIR/tools/dfII/samples/artist/bmslib
DEFINE passiveLib $IC_DIR/tools/dfII/samples/artist/passiveLib
DEFINE pllLib $IC_DIR/tools/dfII/samples/artist/pllLib
DEFINE pllMMLib $IC_DIR/tools/dfII/samples/artist/pllMMLib
DEFINE rfExamples $IC_DIR/tools/dfII/samples/artist/rfExamples
DEFINE rfLib $IC_DIR/tools/dfII/samples/artist/rfLib
DEFINE solutions $IC_DIR/tools/dfII/samples/artist/solutions
DEFINE training $IC_DIR/tools/dfII/samples/artist/training
--
DEFINE ieLib $IC_DIR/tools/dfII/samples/artist/mixSig/ieModels/ieLib
DEFINE ieTest $IC_DIR/tools/dfII/samples/artist/mixSig/ieTest/ieTestLib
--
DEFINE sample $IC_DIR/tools/dfII/samples/cdslib/sample
DEFINE ISO_2_5mm $IC_DIR/tools/dfII/samples/cdslib/sheets/ISO_2_5mm
DEFINE ISO_2mm $IC_DIR/tools/dfII/samples/cdslib/sheets/ISO_2mm
DEFINE US_10ths $IC_DIR/tools/dfII/samples/cdslib/sheets/US_10ths
DEFINE US_16ths $IC_DIR/tools/dfII/samples/cdslib/sheets/US_16ths
DEFINE substrateLib $IC_DIR/share/sna/etc/cdslib/substrateLib
DEFINE connectLib $INCISIVE_DIR/tools/affirma_ams/etc/connect_lib/connectLib
--
-- DEFINE std $IC_DIR/tools/leapfrog/files/STD
-- DEFINE ieee $IC_DIR/tools/leapfrog/files/IEEE
-- DEFINE synergy $IC_DIR/tools/leapfrog/files/SYNERGY
-- DEFINE xl $IC_DIR/tools/leapfrog/files/XL
-- DEFINE valid $IC_DIR/tools/leapfrog/files/VALID
-- DEFINE sim $IC_DIR/tools/leapfrog/files/SIM
Don't clutter your Library Manager with unused libraries!!! Include only necessary libraries indeed!
====== ======
\\
----
Last update: [[pacher@NOSPAMto.infn.it|Luca Pacher]] - Apr 23, 2013
~~NOTOC~~