Skip to main content

CMOS standard-cell characterization kit.

Project description

gctime

Characterization kit for CMOS cells. This Python package comes with a some stand-alone command-line tools:

  • Most notably gctime for recognition and characterization of combinational and sequential cells.
  • sp2bool: Recognition ('reverse engineering') of transistor networks. This is intended for analyzis and debugging.
  • libertyviz: Visualization of NDLM tables.

Getting started

# Clone this repository.
git clone https://codeberg.org/gnucell/gctime
cd gctime

# Install
./install_develop.sh

# Run tests
cd tests
./run_tests.sh

Characterize a cell

An ready-to-run example can be found in the examples folder. The script run_example.sh 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:

gctime --liberty ~/FreePDK45/osu_soc/lib/files/gscl45nm.lib \
	--include ~/FreePDK45/osu_soc/lib/files/gpdk45nm.m \
    --output-loads "0.05, 0.1, 0.2, 0.4, 0.8, 1.6" \
    --slew-times "0.1, 0.2, 0.4, 0.8, 1.6, 3.2" \
	--spice ~/FreePDK45/osu_soc/lib/source/netlists/AND2X1.pex.netlist \
	--cell AND2X1 \
	--output /tmp/and2x1.lib

Characterize multiple cells in the same run:

gctime --liberty ~/FreePDK45/osu_soc/lib/files/gscl45nm.lib \
	--include ~/FreePDK45/osu_soc/lib/files/gpdk45nm.m \
    --output-loads "0.05, 0.1, 0.2, 0.4, 0.8, 1.6" \
    --slew-times "0.1, 0.2, 0.4, 0.8, 1.6, 3.2" \
	--spice ~/FreePDK45/osu_soc/lib/source/netlists/*.pex.netlist \
	--cell INVX1 AND2X1 XOR2X1 \
	--output /tmp/invx1_and2x1_xor2x1.lib

Cell recognition

Cell types can be recognized automatically such that only a minimal liberty file needs to be supplied.

cd examples
gctime --liberty template.lib \
    --analize-cell-function \
    --include gpdk45nm.m \
    --spice INVX1.pex.netlist \
    --cell INVX1 \
    --output-loads "0.05, 0.1, 0.2, 0.4, 0.8, 1.6" \
    --slew-times "0.1, 0.2, 0.4, 0.8, 1.6, 3.2" \
    --output invx1.lib

Sequential cells

Characterization of sequential cells involves finding hold, setup, removal and recovery constraints.

For an example see examples/run_example_flip-flop.sh.

Visualization

Vizualize the result:

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

Characterize a cell with differential inputs

Differential inputs can be specified in the liberty template with the complementary_pin attribute. Only the non-inverted pin should appear in the liberty file.

Differential pairs can also be recognized based on their naming. For example if pairs are named with suffixes _p for the non-inverted pin and _n for the inverted pin:

gctime --diff %_p,%_n ...

Merging liberty files

gctime 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).

Recognize a cell

gctime can recognize the boolean function of cells based on the transistor network. Besides combinational functions also memory-loops can be found and abstracted into latches or flip-flops. The sp2bool command can be used to analyze cells and dump information about their behaviour. This can be useful for debugging and verification.

Example:

# Analyze a combinational cell. 
sp2bool --spice ~/FreePDK45/osu_soc/lib/files/cells.sp --cell NAND2X1

# Analyze a flip-flop with asynchronous set and reset signals.
sp2bool --spice ~/FreePDK45/osu_soc/lib/files/cells.sp --cell DFFSR

For cells with differential inputs the --diff argument must be used to specify differential pairs.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gctime-0.0.17.tar.gz (85.1 kB view details)

Uploaded Source

File details

Details for the file gctime-0.0.17.tar.gz.

File metadata

  • Download URL: gctime-0.0.17.tar.gz
  • Upload date:
  • Size: 85.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.2

File hashes

Hashes for gctime-0.0.17.tar.gz
Algorithm Hash digest
SHA256 4d6ba19a1e758e08042e01b100b3c8b83121487a929f835478d8f77bb971ec8b
MD5 20689f102ddc0e754cbbf499a3f29f47
BLAKE2b-256 cd207f3f9de756cc1ae59389c5a602d73307dcd70fb83981332b707c3edd28b8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page