Pad Cell Generator: Difference between revisions
No edit summary |
|||
| (23 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
The LibreSilicon Pad Cell Generator is an extension of the [[ | [[File:30mA SG13G2@1V2 v2.png|thumb|'''Example 30mA SG13G2@1V2 (version 2)''']] | ||
The LibreSilicon Pad Cell Generator is an extension of the [[LibrePDK]] which besides the driver logic also dynamically generates the mixed signal parts needed for over current and static discharge protection and providing the currents needed for doing useful things with an actual physical chip, like driving an LED or a small motor. | |||
== Existing Groundwork == | == Existing Groundwork == | ||
| Line 8: | Line 7: | ||
Here's some works our generator will be based on: | Here's some works our generator will be based on: | ||
* Gowthami Nalla did some work with the logic circuit and the driver but it's specific to XFAB only https://github.com/gowthaminalla/bidirectional-buffer/ | * Gowthami Nalla did some work with the logic circuit and the driver but it's specific to XFAB only; https://github.com/gowthaminalla/bidirectional-buffer/ | ||
* Very rudimentary development has been done on the ESD front https://github.com/AishikAnalogCKTdesign/ESD | * Very rudimentary development has been done on the ESD front: https://github.com/AishikAnalogCKTdesign/ESD | ||
* Philip's pad frame generator (Perl): https://www2.futureware.at/~philipp/vsd2018/ | |||
* Philip's very basic Perl based pad cell generator (https://pdk.libresilicon.com/PadCellGenerator.zip) | |||
** Perl based | |||
** Not portable | |||
** Needs smarter ESD protection | |||
** Needs smarter IO config | |||
** Doesn't have termination resistor configuration (needed for DDR3/DDR4 PHYs) | |||
** Not even yet half finished | |||
== Configuration == | == Configuration == | ||
The Pad Cell Generator has the task of generating a [[Pad Cell]] for generating a pad frame for taping out a circuit with any given set of design rules for any given process. | The Pad Cell Generator has the task of generating a [[Pad Cell]] for generating a pad frame for taping out a circuit with any given set of design rules for any given process. | ||
Just as with the Standard Cell Generator, you need to provide the Pad Cell Generator the appropriate configuration telling it about all the design constraints and mixed signal characteristics of the process you are | Just as with the Standard Cell Generator, you need to provide the Pad Cell Generator the appropriate configuration telling it about all the design constraints and mixed signal characteristics of the process you are targeting. | ||
Please look at our reference technology folders like the design rule constraints and parameters, for which we introduced a somewhat standardized format with the advent of our [[Danube River]] test wafer generator. | Please look at our reference technology folders like the design rule constraints and parameters, for which we introduced a somewhat standardized format with the advent of our [[Danube River]] test wafer generator. | ||
== How to use == | |||
The Pad Cell Generator is part of [[LibrePDK]] | |||
== How to use | |||
Running the following script within the LibrePDK folder, after following the installation instructions...<syntaxhighlight lang="bash"> | |||
uv run librepdk_padframe_generator -i tests/padframes/padframe_sg13g2_1v2.json | |||
</syntaxhighlight>You should end up with a set of pad cells dimensioned for 20mA, 30mA, 40mA and 60mA driver strength, plus a demo assembly which looks somewhat like this (still work in progress) | |||
[[File:Pad Frame v2 Example SG13G2@1V2.png|none|thumb]] | |||
== Electrical Discharge Protection == | |||
Since we're calculating backwards from the target values we wanna achieve based on values extracted from ngspice simulations using the SPICE models, it is no wonder that the final ngspice simulation turns out to check out fine for all the pad cells we generate. | |||
The whole math is being documented in [[Physics-Based Wire Sizing for I/O Pad Cells]] | |||
Subsequently the ngspice analysis and verification of the reverse solved hardware design can be found in [[ESD Verification]] | |||
Latest revision as of 09:41, 29 May 2026

The LibreSilicon Pad Cell Generator is an extension of the LibrePDK which besides the driver logic also dynamically generates the mixed signal parts needed for over current and static discharge protection and providing the currents needed for doing useful things with an actual physical chip, like driving an LED or a small motor.
Existing Groundwork
The generator is based on the work of several folks who started developing puzzle pieces for it before Google ran out of funding internally and the project had to go on hiatus
Here's some works our generator will be based on:
- Gowthami Nalla did some work with the logic circuit and the driver but it's specific to XFAB only; https://github.com/gowthaminalla/bidirectional-buffer/
- Very rudimentary development has been done on the ESD front: https://github.com/AishikAnalogCKTdesign/ESD
- Philip's pad frame generator (Perl): https://www2.futureware.at/~philipp/vsd2018/
- Philip's very basic Perl based pad cell generator (https://pdk.libresilicon.com/PadCellGenerator.zip)
- Perl based
- Not portable
- Needs smarter ESD protection
- Needs smarter IO config
- Doesn't have termination resistor configuration (needed for DDR3/DDR4 PHYs)
- Not even yet half finished
Configuration
The Pad Cell Generator has the task of generating a Pad Cell for generating a pad frame for taping out a circuit with any given set of design rules for any given process.
Just as with the Standard Cell Generator, you need to provide the Pad Cell Generator the appropriate configuration telling it about all the design constraints and mixed signal characteristics of the process you are targeting.
Please look at our reference technology folders like the design rule constraints and parameters, for which we introduced a somewhat standardized format with the advent of our Danube River test wafer generator.
How to use
The Pad Cell Generator is part of LibrePDK
Running the following script within the LibrePDK folder, after following the installation instructions...
uv run librepdk_padframe_generator -i tests/padframes/padframe_sg13g2_1v2.json
You should end up with a set of pad cells dimensioned for 20mA, 30mA, 40mA and 60mA driver strength, plus a demo assembly which looks somewhat like this (still work in progress)

Electrical Discharge Protection
Since we're calculating backwards from the target values we wanna achieve based on values extracted from ngspice simulations using the SPICE models, it is no wonder that the final ngspice simulation turns out to check out fine for all the pad cells we generate.
The whole math is being documented in Physics-Based Wire Sizing for I/O Pad Cells
Subsequently the ngspice analysis and verification of the reverse solved hardware design can be found in ESD Verification