The <b>Caltech Intermediate Format (CIF)</b> consists in a limited set of graphic primitives used to describe the shapes on each layer of an integrated circuit (see http://en.wikipedia.org/wiki/Caltech_Intermediate_Form for more informations). \n
\subsection cifAutrhos Author
Damien Dupuis: damien.dupuis(at)lip6(.)fr
\subsection cifLimits Limitations
Although the CIF format allows hierarchical description and supports several shapes, in this driver, we do not use hierarchy and only use Polygons.
\section cifDB Stand alone database structure
The database consists in two simple objects :
- CIF::Circuit contains all CIF circuit informations such as the name, the unit used, the scale and the list of all Polygons.
- CIF::Polygon describes a Polygon (a set of points).
\subsection cifDriver Using the driver
To drive a CIF file, user has to create one CIF::Circuit and as many CIF::Polygon as the number of shapes of the layout. The CIF::Polygon objects can be created independently from for the CIF::Circuit but must be finally added to the CIF::Circuit using CIF::Circuit::addPolygon().\n
Once the CIF::Circuit is complete, simply call the CIF::Circuit::writeToFile() method to drive the database to file.
\section cifExamples Examples
As said is the global presentation, VLSI SAPD project provides C++ libraries and Python modules for each supported format. In this section we present two simple code examples to drive a CIF file using C++ or Python. These two examples drive the same file \c transistor.cif:
\include transistor.cif
\image html transistorCif.png CIF example layout
\image latex transistorCif.pdf CIF example layout width=.25\linewidth