====== 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~~