Archived
1
0
Fork
You've already forked librecell
0
forked from tok/librecell
CMOS standard cell generator and characterization suite.
This repository has been archived on 2022年11月20日. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
  • Python 87.7%
  • SourcePawn 6.2%
  • M 3.4%
  • Cython 2.1%
  • Shell 0.6%
Find a file
2022年05月11日 13:24:52 +02:00
librecell-common Bump version. 2021年12月01日 11:09:05 +01:00
librecell-layout Bump version. 2021年12月01日 11:08:00 +01:00
librecell-lib Add FreePDK45 license notice. 2022年05月11日 12:38:12 +02:00
librecell-meta Bump version. 2021年12月01日 11:10:21 +01:00
LICENCES Issue #25 : Add licence text in top-directory. 2021年11月24日 16:59:37 +01:00
.gitignore CI: Add woodpecker CI pipeline (checks install only). 2021年10月15日 13:28:52 +02:00
.woodpecker.yml CI: Comment on how to run container locally. 2021年11月19日 15:48:40 +01:00
install.sh Issue #21 : Use pip to install librecell. 2021年10月29日 16:28:31 +02:00
install_develop.sh Issue #21 : Use pip to install librecell. 2021年10月29日 16:28:31 +02:00
LICENCE Issue #25 : Add licence text in top-directory. 2021年11月24日 16:59:37 +01:00
README.md Link to new location. 2022年05月11日 13:24:52 +02:00
run_tests.sh Tests: include simple sp2bool tests. 2021年11月19日 15:54:18 +01:00

ARCHIVED REPO

This project has been moved to https://codeberg.org/librecell. Further, the layout generator and the characterization tool are now separate projects.

LibreCell

LibreCell aims to be a toolbox for automated synthesis of CMOS logic cells.

LibreCell is structured in multiple sub-projects:

  • librecell-layout: Automated layout generator for CMOS standard cells.
  • librecell-lib: Characterization kit for CMOS cells and tool for handling liberty files.
  • librecell-common: Code that is used across different LibreCell projects such as a netlist parser.
  • librecell-meta: Convinience Python package for easier installation.

The project is in a very early stage and might not yet be ready for productive use. Project structure and API might change heavily in near future.

Getting started

LibreCell can be installed using the Python package manager pip or directly from the git repository.

Dependencies

The following dependencies must be installed manually:

Optional dependencies (not required for default configuration):

Depending on your linux distribution this packages can be installed using the package manager.

Example for Arch Linux:

sudo pacman -S python ngspice z3

Installing from git

It is recommended to use a Python 'virtual environment' for installing all Python dependencies:

# Create a new virtual environment
python3 -m venv my-librecell-env
# Activate the virtual environment
source ./my-librecell-env/bin/activate

Install from git:

git clone https://codeberg.org/tok/librecell.git
cd librecell
./install.sh
# Alternatively use ./install_develop.sh to install symlinks.
# This allows to edit the code with immediate effect on the installed program.

Now, check if the command-line scripts are in the current search path:

lclayout --help

If this shows the documentation of the lclayout command, then things are fine. Otherwise, the PATH environment variable needs to be updated to include $HOME/.local/bin.

# Instead of executing this line each time it can be added to ~/.bashrc
export PATH=$PATH:$HOME/.local/bin

Installing with pip

Note: The version PyPI is often not the most recent one. Consider installing from git to get the most recent version.

It is recommended to use a Python 'virtual environment' for installing all Python dependencies:

# Create a new virtual environment
python3 -m venv my-librecell-env
# Activate the virtual environment
source ./my-librecell-env/bin/activate
pip3 install librecell

Generate a layout

Generate a layout from a SPICE netlist which includes the transistor sizes.

cd librecell-layout
mkdir /tmp/mylibrary
lclayout --output-dir /tmp/mylibrary --tech examples/dummy_tech.py --netlist examples/cells.sp --cell AND2X1
# Use a GDS viewer such as KLayout to inspect the generated layout file `/tmp/mylibrary/*.gds`

Known issues

Reproducibility

You may want to generate standard cells in a fully reproducable manner. Right now there is some non-determinism in LibreCell that has not been investigated yet. The current workaround is to set the PYTHONHASHSEED environment variable.

export PYTHONHASHSEED=42
lclayout ...

Contact

"codextkramerych".replace("x", "@").replace("y", ".")