LibreStandardCell: Difference between revisions

From LibreSilicon
Jump to navigation Jump to search
Created page with "none|thumb"
 
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[File:LibreStandardCell screeny1.png|none|thumb]]
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<syntaxhighlight lang="bash">
git clone https://gitlab.libresilicon.com/leviathan/librestandardcells.git
cd librestandardcells
</syntaxhighlight>
 
== 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<syntaxhighlight lang="bash">
docker pull leviathanch/librestandardcells:latest
</syntaxhighlight>
 
=== 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<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]]
 
=== 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 ==
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<syntaxhighlight lang="bash">
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]].
 
 
After you have successfully run<syntaxhighlight lang="bash">
uv sync --no-cache
</syntaxhighlight>You can then run<syntaxhighlight lang="bash">
uv run ./LibreStandardCells/web_server.py --host 0.0.0.0 --port 8000
</syntaxhighlight>
 
After loading you should be seeing the following output in your terminal
 
[[File:Screeny.png|none|thumb|After the web service has loaded]]
 
'''IMPORTANT:''' Don't forget to install the [[LibrePDK#OpenVAF models|OpenVAF models]] in order to characterize cells for IHP
 
== Usage ==
Following the link and opening <nowiki>http://0.0.0.0:8000</nowiki> 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.[[File:LibreStandardCell screeny1.png|none|thumb]]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.[[File:LibreStandardCell screeny2.png|none|thumb]]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

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

After the web service has loaded

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

After the web service has loaded

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