# 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 `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:
```sh
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:
```sh
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:
```sh
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.
```sh
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`).
Raw data
{
"_id": null,
"home_page": "https://codeberg.org/tok/librecell",
"name": "librecell-lib",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "cmos cell characterization vlsi asic",
"author": "T. Kramer",
"author_email": "code@tkramer.ch",
"download_url": "https://files.pythonhosted.org/packages/31/c6/aff67e54ed077602281c0cb6a434425bbd4b6bad86bbd2636ffa4c7ee297/librecell-lib-0.0.8.tar.gz",
"platform": "",
"description": "# LibreCell - Lib\nCharacterization kit for CMOS cells.\n\n## Getting started\n\nSee install instructions in top-project.\n\n### Characterize a cell\n\nAn ready-to-run example can be found in the `examples` folder.\nThe script `run_example.sh` should characterize the `INVX1` inverter.\n\nThe following example determines the input capacitances and timing delays of a combinational cell.\n\nIt is assumed that `FreePDK45` is installed in the users home directory.\n\nRequired inputs are:\n* --liberty: A template liberty file which defines how the cells should be characterized.\n* --include: SPICE files or models to be included.\n* --spice: A SPICE file which contains the transistor level circuit of the cell (best including extracted parasitic capacitances).\n* --cell: Name of the cell to be characterized.\n* --output: Output liberty file which will contain the characterization data.\n\nCharacterize a single cell:\n```sh\nlctime --liberty ~/FreePDK45/osu_soc/lib/files/gscl45nm.lib \\\n\t--include ~/FreePDK45/osu_soc/lib/files/gpdk45nm.m \\\n\t--spice ~/FreePDK45/osu_soc/lib/source/netlists/AND2X1.pex.netlist \\\n\t--cell AND2X1 \\\n\t--output /tmp/and2x1.lib\n```\n\nCharacterize multiple cells in the same run:\n```sh\nlctime --liberty ~/FreePDK45/osu_soc/lib/files/gscl45nm.lib \\\n\t--include ~/FreePDK45/osu_soc/lib/files/gpdk45nm.m \\\n\t--spice ~/FreePDK45/osu_soc/lib/source/netlists/*.pex.netlist \\\n\t--cell INVX1 AND2X1 XOR2X1 \\\n\t--output /tmp/invx1_and2x1_xor2x1.lib\n```\n\n\nVizualize the result:\n```sh\nlibertyviz -l /tmp/and2x1.lib --cell AND2X1 --pin Y --related-pin A --table cell_rise\n```\n\n### Merging liberty files\n`lctime` will output a liberty file containing only one cell. The `libertymerge` command allows to merge this kind of\noutput file back into the liberty template.\n\nThe following example will take `base_liberty.lib` as a template and update its `cell` entries with the data found in\nthe liberty files in the `characterization` directory.\n```sh\nlibertymerge -b base_liberty.lib \\\n -o output_liberty.lib \\\n -u characterization/*.lib\n```\nThis approach allows to run characterization runs of multiple cells independently and in parallel (e.g using `make`).",
"bugtrack_url": null,
"license": "AGPL",
"summary": "CMOS standard cell characterization kit.",
"version": "0.0.8",
"split_keywords": [
"cmos",
"cell",
"characterization",
"vlsi",
"asic"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "8f8a21ed9d06e6c9f2b110b3da46e090",
"sha256": "2dccb7da4292e00e945f9c98e54454d0415d09ddad366dfd79e4ebbb740d8eec"
},
"downloads": -1,
"filename": "librecell-lib-0.0.8.tar.gz",
"has_sig": false,
"md5_digest": "8f8a21ed9d06e6c9f2b110b3da46e090",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 52467,
"upload_time": "2020-12-30T17:35:55",
"upload_time_iso_8601": "2020-12-30T17:35:55.732289Z",
"url": "https://files.pythonhosted.org/packages/31/c6/aff67e54ed077602281c0cb6a434425bbd4b6bad86bbd2636ffa4c7ee297/librecell-lib-0.0.8.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2020-12-30 17:35:55",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "librecell-lib"
}