Pad Frame Generator: Difference between revisions
| (11 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
[[File: | [[File:Padframe Example.png|thumb|Example of a pad frame for SG13G2@1.2V]] | ||
The Pad Frame Generator is part of the [[LibrePDK]] and provides the [[Pad Cell Generator]] functionality. | The Pad Frame Generator is part of the [[LibrePDK]] and provides the [[Pad Cell Generator]] functionality. | ||
| Line 10: | Line 10: | ||
== How to use == | == How to use == | ||
There are two options on how you can run the Pad Frame Generator on your machine, you can go the easy route and use a docker container or you can [[Pad Frame Generator#Installation|set up LibrePDK locally]]. | |||
An example for a paframe config can be found here [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/tests/padframes/padframe_sg13g2_1v2.json?ref_type=heads padframe_sg13g2_1v2.json] | |||
=== Docker === | |||
First pull the docker image for the [[LibrePDK]] in order to make sure the image is up to date by running<syntaxhighlight lang="bash"> | First pull the docker image for the [[LibrePDK]] in order to make sure the image is up to date by running<syntaxhighlight lang="bash"> | ||
docker pull leviathanch/librepdk:latest | docker pull leviathanch/librepdk:latest | ||
</syntaxhighlight>Then you can feed your JSON config for the padframe you have configured to the pad frame generator script contained in the docker image | </syntaxhighlight>Then you can feed your JSON config for the padframe you have configured to the pad frame generator script contained in the docker image. | ||
<syntaxhighlight lang="bash">docker run -it --rm \ | |||
-e HOST_UID=$(id -u) -e HOST_GID=$(id -g) \ | -e HOST_UID=$(id -u) -e HOST_GID=$(id -g) \ | ||
-v "$(pwd)":/workspace leviathanch/librepdk:latest \ | -v "$(pwd)":/workspace leviathanch/librepdk:latest \ | ||
librepdk_padframe_generator -i padframe_config.json \ | librepdk_padframe_generator -i padframe_config.json \ | ||
-o my_padframe</syntaxhighlight>After running the generator you should have a folder named my_padframe containing the LEF, DEF, Magic and all the other files you need for running a full synthesis flow of your designs. | -o my_padframe</syntaxhighlight>After running the generator you should have a folder named my_padframe containing the LEF, DEF, Magic and all the other files you need for running a full synthesis flow of your designs. | ||
=== Run Locally === | |||
After [[Pad Frame Generator#Installation|seting up LibrePDK locally]] you can generate your pad frame by running<syntaxhighlight lang="bash">uv run \ | |||
librepdk_padframe_generator -i padframe_config.json \ | |||
-o my_padframe</syntaxhighlight> | |||
== Test cases == | |||
Proper ESD and switching behavior has been verified for all supported technologies in LibrePDK and reports for two of the most important test cases have been put onto our wiki page. | |||
SG13G2 is important because it's a complex high frequency process with many metal layers plus there is an opportunity for cooperating in a tapeout. | |||
GF180A only has 3 metal layers which best represents low tech nodes, so it was important to verify that we also can produce working pad frames for such a low metal count process. | |||
Tests have been performed for the sample pad frame configurations for [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/tests/padframes/padframe_gf180a_3v3.json?ref_type=heads IHP's SG13G2 at 1.2V] and the [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/tests/padframes/padframe_gf180a_3v3.json?ref_type=heads GF180A process at 3.3V] (by Global Foundries). | |||
Please look at [[LibrePDK Padframe SPICE Verification Report SG13G2@1.2V]] and [[LibrePDK Padframe SPICE Verification Report GF180A@3.3V]] for the simulation verification results and wave forms. | |||
== Installation == | == Installation == | ||
| Line 24: | Line 45: | ||
== Benchmarks == | == Benchmarks == | ||
Generating all those individual geometries takes a lot of time, an initial generation run can take up to half an hour due to the complexity and size of a pad frame and its pad cells, which is why we introduced component caching. | |||
=== Initial run === | === Initial run === | ||
<syntaxhighlight lang="bash"> | The initial run for GF180A takes around 20 minutes, IHP and Skywater with even more layers can take up to 32 minutes<syntaxhighlight lang="bash"> | ||
real 20m48.886s | real 20m48.886s | ||
user 20m46.885s | user 20m46.885s | ||
| Line 33: | Line 55: | ||
=== Further runs === | === Further runs === | ||
<syntaxhighlight lang="bash"> | During the second run that generation time is cut in half when assembling the padframe and writing it out.<syntaxhighlight lang="bash"> | ||
real 8m43.972s | real 8m43.972s | ||
user 8m40.889s | user 8m40.889s | ||
sys 0m4.139s | sys 0m4.139s | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Latest revision as of 16:35, 1 September 2026

The Pad Frame Generator is part of the LibrePDK and provides the Pad Cell Generator functionality.
It's job is to assemble a ready to use pad frame harness, with ESD protection and power rail wire width properly adjusted for accommodating the intended current driving capacity as well as the intended voltage levels to be used.
Types of Pad Cells produced
Currently we support only simple IO Pad Cell, analog cells, and power cells, complex pad cells still are being in development.
The very special impedance compensated pad cell in the works (High-Speed Impedance-Compensated Pad Cell) is needed in order to hook up DDR4 RAM to our chips or build a PCIe device.
How to use
There are two options on how you can run the Pad Frame Generator on your machine, you can go the easy route and use a docker container or you can set up LibrePDK locally.
An example for a paframe config can be found here padframe_sg13g2_1v2.json
Docker
First pull the docker image for the LibrePDK in order to make sure the image is up to date by running
docker pull leviathanch/librepdk:latest
Then you can feed your JSON config for the padframe you have configured to the pad frame generator script contained in the docker image.
docker run -it --rm \
-e HOST_UID=$(id -u) -e HOST_GID=$(id -g) \
-v "$(pwd)":/workspace leviathanch/librepdk:latest \
librepdk_padframe_generator -i padframe_config.json \
-o my_padframe
After running the generator you should have a folder named my_padframe containing the LEF, DEF, Magic and all the other files you need for running a full synthesis flow of your designs.
Run Locally
After seting up LibrePDK locally you can generate your pad frame by running
uv run \
librepdk_padframe_generator -i padframe_config.json \
-o my_padframe
Test cases
Proper ESD and switching behavior has been verified for all supported technologies in LibrePDK and reports for two of the most important test cases have been put onto our wiki page.
SG13G2 is important because it's a complex high frequency process with many metal layers plus there is an opportunity for cooperating in a tapeout.
GF180A only has 3 metal layers which best represents low tech nodes, so it was important to verify that we also can produce working pad frames for such a low metal count process.
Tests have been performed for the sample pad frame configurations for IHP's SG13G2 at 1.2V and the GF180A process at 3.3V (by Global Foundries).
Please look at LibrePDK Padframe SPICE Verification Report SG13G2@1.2V and LibrePDK Padframe SPICE Verification Report GF180A@3.3V for the simulation verification results and wave forms.
Installation
Since the Pad Frame Generator is part of LibrePDK you can find the guide on how to install all the dependencies in the Installation section of the LibrePDK page
Benchmarks
Generating all those individual geometries takes a lot of time, an initial generation run can take up to half an hour due to the complexity and size of a pad frame and its pad cells, which is why we introduced component caching.
Initial run
The initial run for GF180A takes around 20 minutes, IHP and Skywater with even more layers can take up to 32 minutes
real 20m48.886s
user 20m46.885s
sys 0m3.880s
Further runs
During the second run that generation time is cut in half when assembling the padframe and writing it out.
real 8m43.972s
user 8m40.889s
sys 0m4.139s