Layout Flow

The layout in this repository is schematic driven: the schematic is drawn in xschem, the layout is written by cicpy, and magic, klayout and netgen check it.

The flow itself is documented with the tool that implements it, so it is written once and stays current:

Layout with cicpy, a field guide

That guide covers the sidecar (design/<LIB>/<CELL>.py is the cell), the routing loop — search → emit an anchored story → import it into the sidecar → DRC/KDRC/LVS/ANT → next net — and the rule that holds all of it together: a design file never carries a coordinate; every wire is anchored to a pin, a channel track or a band that is recomputed from the placement on every build.

The reference cells for the guide live in this repository: design/LELO_TEMP_SKY130A/LELOTEMP_CMPR.py (a fully declared cell) and design/LELO_TEMP_SKY130A/LELO_TEMP.py (a top of stories).

Build and verify from work/:

make mag  CELL=<CELL>
make drc  CELL=<CELL>
make gds kdrc CELL=<CELL>
make cdl lvs  CELL=<CELL>
make ant  CELL=<CELL>