LibreStandardCell: Difference between revisions
No edit summary |
|||
| (2 intermediate revisions by the same user not shown) | |||
| Line 20: | Line 20: | ||
In order to use the interface use the following command here, which binds our local cells_json from the repository into the Docker container<syntaxhighlight lang="bash">docker run --rm -p 127.0.0.1:8000:8000 -v $(pwd)/work:/app/work -v $(pwd)/exports:/app/exports -v $(pwd)/cells_json:/app/cells_json leviathanch/librestandardcells:latest</syntaxhighlight>You should end up seeing a message like this on your terminal as soon as the service is started up | In order to use the interface use the following command here, which binds our local cells_json from the repository into the Docker container<syntaxhighlight lang="bash">docker run --rm -p 127.0.0.1:8000:8000 -v $(pwd)/work:/app/work -v $(pwd)/exports:/app/exports -v $(pwd)/cells_json:/app/cells_json leviathanch/librestandardcells:latest</syntaxhighlight>You should end up seeing a message like this on your terminal as soon as the service is started up | ||
[[File:Screeny.png|none|thumb|After the web service has loaded]] | [[File:Screeny.png|none|thumb|After the web service has loaded]] | ||
=== Building your own Docker container === | |||
Building your own Docker contaienr is as simple as running<syntaxhighlight lang="bash"> | |||
scripts/build_docker.sh | |||
</syntaxhighlight>in the source folder you just clones because basically all dependencies are already provided by the [[LibrePDK#Building your own Docker images|LibrePDK docker]] image | |||
== Local installation == | == Local installation == | ||
| Line 25: | Line 30: | ||
git pull --recurse-submodules | git pull --recurse-submodules | ||
</syntaxhighlight>Then you need to make sure that the dependencies of LibrePDK are being installed, according to this part of the [[LibrePDK#Dependencies|LibrePDK installation guide]]. | </syntaxhighlight>Then you need to make sure that the dependencies of LibrePDK are being installed, according to this part of the [[LibrePDK#Dependencies|LibrePDK installation guide]]. | ||
After you have successfully run<syntaxhighlight lang="bash"> | After you have successfully run<syntaxhighlight lang="bash"> | ||
Latest revision as of 00:06, 12 August 2026
You need standard logic cells, small logic gate layouts made from place and routing discrete FETs, in order to turn the RTL level logic Yosys spits out into an actual digital chip layout.
You can now use the LibreStandardCell generator and generate custom standard logic cell libraries where you decide the target technology, voltage, height and thermal budget.
Getting the Code
Clone the repository where the JSON files for the cell catalog are constantly updated
git clone https://gitlab.libresilicon.com/leviathan/librestandardcells.git
cd librestandardcells
Docker
We use Docker images for shipping the software in order to make sure that you can avoid all the headaches with dependencies and can go straight to using our tools without friction.
Fetching the Docker image
First pull the docker image in order to make sure that it's up to date, new and updated images are pushed all the time in order to fix new bugs
docker pull leviathanch/librestandardcells:latest
Launch the Docker container
In order to use the interface use the following command here, which binds our local cells_json from the repository into the Docker container
docker run --rm -p 127.0.0.1:8000:8000 -v $(pwd)/work:/app/work -v $(pwd)/exports:/app/exports -v $(pwd)/cells_json:/app/cells_json leviathanch/librestandardcells:latest
You should end up seeing a message like this on your terminal as soon as the service is started up

Building your own Docker container
Building your own Docker contaienr is as simple as running
scripts/build_docker.sh
in the source folder you just clones because basically all dependencies are already provided by the LibrePDK docker image
Local installation
Since LibrePDK is already included as a git submodule in this repo, all you need to do is to make sure that all submodules are being updated and brought up to date
git pull --recurse-submodules
Then you need to make sure that the dependencies of LibrePDK are being installed, according to this part of the LibrePDK installation guide.
After you have successfully run
uv sync --no-cache
You can then run
uv run ./LibreStandardCells/web_server.py --host 0.0.0.0 --port 8000
After loading you should be seeing the following output in your terminal

IMPORTANT: Don't forget to install the OpenVAF models in order to characterize cells for IHP
Usage
Following the link and opening http://0.0.0.0:8000 should then land you on such an interface, where you can select what technology and voltage you wanna generate cells for.
You can either have it dynamically decide on the height of the cells or you can set a fixed height and select multiple cells for batch processing, which is needed for creating a library in which all cells have the same height.

You can also click onto the name of an individual cell which has passed through P&R and the characterization and look at the results as shown below.

After you have generated the cells you want, you can merge them into one single Liberty file, download the Liberty library file and use it with Yosys
Examples
Examples of successful generations can be found here: https://gitlab.libresilicon.com/leviathan/librestandardcells/-/tree/master/example_cells/SG13G2_1.2V?ref_type=heads