CMOS standard-cell generator and characterization suite.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Thomas Kramer 1607667951 More flexibility for dependencies. 4 days ago
examples lctime: Specify output load and slew times as command line arguments. 2 months ago
lclib lclayout: Store and load placement with --placement-file argument. 1 month ago
test_data Include test data from freepdk45. 4 months ago
LICENSE 📜 AGPLv3 license for librecell-lib package. 2 years ago lctime: Update readme. 4 months ago More flexibility for dependencies. 4 days ago

LibreCell - Lib

Characterization kit for CMOS cells.

Getting started

See install instructions in top-project.

Characterize a cell

An ready-to-run example can be found in the examples folder. The script should characterize the INVX1 inverter.

The following example determines the input capacitances and timing delays of a combinational cell.

It is assumed that FreePDK45 is installed in the users home directory.

Required inputs are:

  • --liberty: A template liberty file which defines how the cells should be characterized.
  • --include: SPICE files or models to be included.
  • --spice: A SPICE file which contains the transistor level circuit of the cell (best including extracted parasitic capacitances).
  • --cell: Name of the cell to be characterized.
  • --output: Output liberty file which will contain the characterization data.

Characterize a single cell:

lctime --liberty ~/FreePDK45/osu_soc/lib/files/gscl45nm.lib \
	--include ~/FreePDK45/osu_soc/lib/files/gpdk45nm.m \
	--spice ~/FreePDK45/osu_soc/lib/source/netlists/AND2X1.pex.netlist \
	--cell AND2X1 \
	--output /tmp/and2x1.lib

Characterize multiple cells in the same run:

lctime --liberty ~/FreePDK45/osu_soc/lib/files/gscl45nm.lib \
	--include ~/FreePDK45/osu_soc/lib/files/gpdk45nm.m \
	--spice ~/FreePDK45/osu_soc/lib/source/netlists/*.pex.netlist \
	--cell INVX1 AND2X1 XOR2X1 \
	--output /tmp/invx1_and2x1_xor2x1.lib

Vizualize the result:

libertyviz -l /tmp/and2x1.lib --cell AND2X1 --pin Y --related-pin A --table cell_rise

Merging liberty files

lctime will output a liberty file containing only one cell. The libertymerge command allows to merge this kind of output file back into the liberty template.

The following example will take base_liberty.lib as a template and update its cell entries with the data found in the liberty files in the characterization directory.

libertymerge -b base_liberty.lib \
    -o output_liberty.lib \
    -u characterization/*.lib

This approach allows to run characterization runs of multiple cells independently and in parallel (e.g using make).