<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.libresilicon.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Leviathan</id>
	<title>LibreSilicon - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.libresilicon.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Leviathan"/>
	<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Special:Contributions/Leviathan"/>
	<updated>2026-06-14T12:07:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Basic_Tooling&amp;diff=695</id>
		<title>Basic Tooling</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Basic_Tooling&amp;diff=695"/>
		<updated>2026-05-30T09:34:02Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* Rapid Thermal Processing (RTP) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order to not have to rely on foundries anymore and to truly democratize semiconductor manufacturing equipment, and eliminating the risk of supply chain attacks by eliminating the supply chain all together, a minimum viable lab setup is needed for making semiconductor structures in your shed.&lt;br /&gt;
&lt;br /&gt;
In order to manufacture transistors, you need the capability of performing the below basic physical operations on your sample&lt;br /&gt;
&lt;br /&gt;
== Lower Particle Count in the Air ==&lt;br /&gt;
&lt;br /&gt;
== Heat Treatment ==&lt;br /&gt;
Heat treatment is critical for several steps like dopant diffusion, in order to control the depth of wells, as well as for depositing materials in a CVD process, like polysilicon and low temperature oxide (LTO) or for forming silicide/salicide thin films reducing the sheet resistance of polysilicon and junctions.&lt;br /&gt;
&lt;br /&gt;
=== Rapid Thermal Processing (RTP) ===&lt;br /&gt;
This is used for instance for initiating metallurgical reactions between a deposited titanium thin film and the silicon substrate in order to achieve titanium silicide which reduces the resistance of the polisilicon as I do in step 13 of [[LibreSilicon 1µm CMOS Process Flow (HKUST NFF)|LS1U]] ([[LibreSilicon 1µm CMOS Process Flow (HKUST NFF)#Step 13: Silicidation]])&lt;br /&gt;
&lt;br /&gt;
=== Tube Furnace (and CVD) ===&lt;br /&gt;
&lt;br /&gt;
== Photo Lithography ==&lt;br /&gt;
&lt;br /&gt;
== Etching ==&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Basic_Tooling&amp;diff=694</id>
		<title>Basic Tooling</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Basic_Tooling&amp;diff=694"/>
		<updated>2026-05-30T09:32:37Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* Heat Treatment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order to not have to rely on foundries anymore and to truly democratize semiconductor manufacturing equipment, and eliminating the risk of supply chain attacks by eliminating the supply chain all together, a minimum viable lab setup is needed for making semiconductor structures in your shed.&lt;br /&gt;
&lt;br /&gt;
In order to manufacture transistors, you need the capability of performing the below basic physical operations on your sample&lt;br /&gt;
&lt;br /&gt;
== Lower Particle Count in the Air ==&lt;br /&gt;
&lt;br /&gt;
== Heat Treatment ==&lt;br /&gt;
Heat treatment is critical for several steps like dopant diffusion, in order to control the depth of wells, as well as for depositing materials in a CVD process, like polysilicon and low temperature oxide (LTO) or for forming silicide/salicide thin films reducing the sheet resistance of polysilicon and junctions.&lt;br /&gt;
&lt;br /&gt;
=== Rapid Thermal Processing (RTP) ===&lt;br /&gt;
This is used for instance for initiating metallurgical reactions between a deposited titanium thin film and the silicon substrate in order to achieve titanium silicide which reduces the resistance of the polisilicon as I do in [[LibreSilicon 1µm CMOS Process Flow (HKUST NFF)|L1SU]]&lt;br /&gt;
&lt;br /&gt;
=== Tube Furnace (and CVD) ===&lt;br /&gt;
&lt;br /&gt;
== Photo Lithography ==&lt;br /&gt;
&lt;br /&gt;
== Etching ==&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=693</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=693"/>
		<updated>2026-05-29T13:37:54Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* HBS Reverse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD Tests ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here are the [https://gitlab.libresilicon.com/generator-tools/librepdk/-/tree/master/tests/esd?ref_type=heads SPICE decks]&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]Running the detailed tests for IHP with&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/run_single_test.sh SG13G2:1.2 padcell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;yields&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Peak PAD voltage: 2.467 V&lt;br /&gt;
Peak current: 1.330122 A&lt;br /&gt;
Peak resistor power: 2.654 kW&lt;br /&gt;
Final dissipated energy: 168.225485 µJ&lt;br /&gt;
HBM plots written to /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/plots/hbm_pd_forward&lt;br /&gt;
Waveform data: /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/hbm_waveforms_hbm_pd_forward.dat&lt;br /&gt;
Peak PAD voltage: 2.310 V&lt;br /&gt;
Peak current: 1.330248 A&lt;br /&gt;
Peak resistor power: 2.654 kW&lt;br /&gt;
Final dissipated energy: 168.240327 µJ&lt;br /&gt;
HBM plots written to /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/plots/hbm_ns_forward&lt;br /&gt;
Waveform data: /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/hbm_waveforms_hbm_ns_forward.dat&lt;br /&gt;
Peak PAD voltage: -0.029 V&lt;br /&gt;
Peak current: 1.323457 A&lt;br /&gt;
Peak resistor power: 2.627 kW&lt;br /&gt;
Final dissipated energy: 166.729178 µJ&lt;br /&gt;
HBM plots written to /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/plots/hbm_nd_reverse&lt;br /&gt;
Waveform data: /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/hbm_waveforms_hbm_nd_reverse.dat&lt;br /&gt;
Peak PAD voltage: -0.029 V&lt;br /&gt;
Peak current: 1.323461 A&lt;br /&gt;
Peak resistor power: 2.627 kW&lt;br /&gt;
Final dissipated energy: 166.782671 µJ&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HBS Forward ===&lt;br /&gt;
Simulating forward ESD discharge basically simulates the path drawn below&lt;br /&gt;
[[File:ESD forward IHP SG13G2 1V2.png|thumb|277x277px|none]]The forward discharge results in a cummulative energy of 100-150 micro Jules.&lt;br /&gt;
[[File:Forward Hbm esd dissipation.png|none|thumb]]&lt;br /&gt;
The things won&#039;t even get warm&lt;br /&gt;
&lt;br /&gt;
=== HBS Reverse ===&lt;br /&gt;
For the reverse test, it&#039;s backwards...&lt;br /&gt;
[[File:ESD backwards IHP SG13G2-@ 1v2.png|none|thumb|341x341px]]The same graph results from simulating the reverse ESD, because that&#039;s how the diodes have been dimensioned&lt;br /&gt;
[[File:Reverse Hbm esd dissipation.png|none|thumb]]&lt;br /&gt;
Not matter which direction, things won&#039;t even get warm&lt;br /&gt;
&lt;br /&gt;
== The IHP SG13G2 case ==&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a balance between electron mobility and thermal budget... took a while to code that. It&#039;s really complicated physics, but it&#039;s now all done in Python so you won&#039;t have to solve those partial differential equations yourself.&lt;br /&gt;
[[File:30mA SG13G2@1V2 v2.png|left|thumb|419x419px|&#039;&#039;&#039;30mA SG13G2@1V2&#039;&#039;&#039; ]]&lt;br /&gt;
[[File:30mA SG13G2@3V3 v2.png|thumb|335x335px|30mA SG13G2@3V3]]&lt;br /&gt;
Lets look at those two pad cells here. One is dimensionsed for 30mA at 1.2V and the other at 3.3V&lt;br /&gt;
&lt;br /&gt;
One would assume that the 3.3V transistors would be larger.&lt;br /&gt;
&lt;br /&gt;
However.&lt;br /&gt;
&lt;br /&gt;
The width of a channel (length of the gate) is being determined by &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;L_{gate} = I_{target}/I_{sat}&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;\left [ I_{sat} \right ] = \frac{mA}{uA} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That however has to be combined with the thermal budget, which gives a minimum area for the energy to be dissipated on.&lt;br /&gt;
&lt;br /&gt;
In the case of the 1.2V transistors the saturation current of the channel isn&#039;t high enough anyway for violating the minimum area requirement because it doesn&#039;t have additional doping like the IHP transistor lifted to 3.3V by additional HV doping.&lt;br /&gt;
&lt;br /&gt;
This doping improves the conductivity of the channel, so the gates had to be scaled up in order to cover enough space for dissipating the energy they conduct.&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:Forward_Hbm_esd_dissipation.png&amp;diff=692</id>
		<title>File:Forward Hbm esd dissipation.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:Forward_Hbm_esd_dissipation.png&amp;diff=692"/>
		<updated>2026-05-29T13:34:59Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Forward Hbm esd dissipation&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:Reverse_Hbm_esd_dissipation.png&amp;diff=691</id>
		<title>File:Reverse Hbm esd dissipation.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:Reverse_Hbm_esd_dissipation.png&amp;diff=691"/>
		<updated>2026-05-29T13:34:23Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Reverse Hbm esd dissipation&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=690</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=690"/>
		<updated>2026-05-29T13:33:28Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* ESD Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD Tests ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]Running the detailed tests for IHP with&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/run_single_test.sh SG13G2:1.2 padcell&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;yields&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
Peak PAD voltage: 2.467 V&lt;br /&gt;
Peak current: 1.330122 A&lt;br /&gt;
Peak resistor power: 2.654 kW&lt;br /&gt;
Final dissipated energy: 168.225485 µJ&lt;br /&gt;
HBM plots written to /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/plots/hbm_pd_forward&lt;br /&gt;
Waveform data: /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/hbm_waveforms_hbm_pd_forward.dat&lt;br /&gt;
Peak PAD voltage: 2.310 V&lt;br /&gt;
Peak current: 1.330248 A&lt;br /&gt;
Peak resistor power: 2.654 kW&lt;br /&gt;
Final dissipated energy: 168.240327 µJ&lt;br /&gt;
HBM plots written to /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/plots/hbm_ns_forward&lt;br /&gt;
Waveform data: /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/hbm_waveforms_hbm_ns_forward.dat&lt;br /&gt;
Peak PAD voltage: -0.029 V&lt;br /&gt;
Peak current: 1.323457 A&lt;br /&gt;
Peak resistor power: 2.627 kW&lt;br /&gt;
Final dissipated energy: 166.729178 µJ&lt;br /&gt;
HBM plots written to /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/plots/hbm_nd_reverse&lt;br /&gt;
Waveform data: /run/media/leviathan/dde9e2a1-4a6e-4d1b-afec-7c557d080ef8/LibrePDK/librepdk/generated_output/SG13G2/1.2V/padcell/out/io_cell_20mA_1p2V/hbm_waveforms_hbm_nd_reverse.dat&lt;br /&gt;
Peak PAD voltage: -0.029 V&lt;br /&gt;
Peak current: 1.323461 A&lt;br /&gt;
Peak resistor power: 2.627 kW&lt;br /&gt;
Final dissipated energy: 166.782671 µJ&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== HBS Forward ===&lt;br /&gt;
Simulating forward ESD discharge basically simulates the path drawn below&lt;br /&gt;
[[File:ESD forward IHP SG13G2 1V2.png|thumb|277x277px|none]]&lt;br /&gt;
&lt;br /&gt;
=== HBS Reverse ===&lt;br /&gt;
For the reverse test, it&#039;s backwards...&lt;br /&gt;
[[File:ESD backwards IHP SG13G2-@ 1v2.png|none|thumb|341x341px]]&lt;br /&gt;
&lt;br /&gt;
== The IHP SG13G2 case ==&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a balance between electron mobility and thermal budget... took a while to code that. It&#039;s really complicated physics, but it&#039;s now all done in Python so you won&#039;t have to solve those partial differential equations yourself.&lt;br /&gt;
[[File:30mA SG13G2@1V2 v2.png|left|thumb|419x419px|&#039;&#039;&#039;30mA SG13G2@1V2&#039;&#039;&#039; ]]&lt;br /&gt;
[[File:30mA SG13G2@3V3 v2.png|thumb|335x335px|30mA SG13G2@3V3]]&lt;br /&gt;
Lets look at those two pad cells here. One is dimensionsed for 30mA at 1.2V and the other at 3.3V&lt;br /&gt;
&lt;br /&gt;
One would assume that the 3.3V transistors would be larger.&lt;br /&gt;
&lt;br /&gt;
However.&lt;br /&gt;
&lt;br /&gt;
The width of a channel (length of the gate) is being determined by &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;L_{gate} = I_{target}/I_{sat}&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;\left [ I_{sat} \right ] = \frac{mA}{uA} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That however has to be combined with the thermal budget, which gives a minimum area for the energy to be dissipated on.&lt;br /&gt;
&lt;br /&gt;
In the case of the 1.2V transistors the saturation current of the channel isn&#039;t high enough anyway for violating the minimum area requirement because it doesn&#039;t have additional doping like the IHP transistor lifted to 3.3V by additional HV doping.&lt;br /&gt;
&lt;br /&gt;
This doping improves the conductivity of the channel, so the gates had to be scaled up in order to cover enough space for dissipating the energy they conduct.&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:ESD_backwards_IHP_SG13G2-@_1v2.png&amp;diff=689</id>
		<title>File:ESD backwards IHP SG13G2-@ 1v2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:ESD_backwards_IHP_SG13G2-@_1v2.png&amp;diff=689"/>
		<updated>2026-05-29T13:32:12Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ESD backwards IHP SG13G2-@ 1v2&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:ESD_forward_IHP_SG13G2_1V2.png&amp;diff=688</id>
		<title>File:ESD forward IHP SG13G2 1V2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:ESD_forward_IHP_SG13G2_1V2.png&amp;diff=688"/>
		<updated>2026-05-29T13:28:55Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ESD forward IHP SG13G2 1V2&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=687</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=687"/>
		<updated>2026-05-29T13:01:45Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* ESD path: Bonding Path to VSS ESD and VDD ESD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD Tests ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
Here are some simulation values extracted from ngspice&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Peak PAD voltage:&#039;&#039;&#039; 1910.869 V &lt;br /&gt;
* &#039;&#039;&#039;Peak current:&#039;&#039;&#039; 1.314834 A &lt;br /&gt;
* &#039;&#039;&#039;Peak resistor power:&#039;&#039;&#039; 2.593 kW  That&#039;s over a 1.5 kΩ sense resistor, the power dissipated over the actual diodes is is only 3.144856 µJ&lt;br /&gt;
* &#039;&#039;&#039;Final dissipated energy:&#039;&#039;&#039; 3.144856 µJ&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the &#039;&#039;&#039;micro&#039;&#039;&#039; Jules range (3.144856 µJ)&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
Only in the beginning there&#039;s a huge peak in current 1.314834 A, but since it&#039;s only a burst of a few nano seconds the ESD diodes handle it with ease &lt;br /&gt;
&lt;br /&gt;
== The IHP SG13G2 case ==&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a balance between electron mobility and thermal budget... took a while to code that. It&#039;s really complicated physics, but it&#039;s now all done in Python so you won&#039;t have to solve those partial differential equations yourself.&lt;br /&gt;
[[File:30mA SG13G2@1V2 v2.png|left|thumb|419x419px|&#039;&#039;&#039;30mA SG13G2@1V2&#039;&#039;&#039; ]]&lt;br /&gt;
[[File:30mA SG13G2@3V3 v2.png|thumb|335x335px|30mA SG13G2@3V3]]&lt;br /&gt;
Lets look at those two pad cells here. One is dimensionsed for 30mA at 1.2V and the other at 3.3V&lt;br /&gt;
&lt;br /&gt;
One would assume that the 3.3V transistors would be larger.&lt;br /&gt;
&lt;br /&gt;
However.&lt;br /&gt;
&lt;br /&gt;
The width of a channel (length of the gate) is being determined by &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;L_{gate} = I_{target}/I_{sat}&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;\left [ I_{sat} \right ] = \frac{mA}{uA} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That however has to be combined with the thermal budget, which gives a minimum area for the energy to be dissipated on.&lt;br /&gt;
&lt;br /&gt;
In the case of the 1.2V transistors the saturation current of the channel isn&#039;t high enough anyway for violating the minimum area requirement because it doesn&#039;t have additional doping like the IHP transistor lifted to 3.3V by additional HV doping.&lt;br /&gt;
&lt;br /&gt;
This doping improves the conductivity of the channel, so the gates had to be scaled up in order to cover enough space for dissipating the energy they conduct.&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=LibrePDK&amp;diff=686</id>
		<title>LibrePDK</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=LibrePDK&amp;diff=686"/>
		<updated>2026-05-29T11:31:28Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* Pad Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The LibrePDK is the library driving [[Danube River]] and the [[Pad Cell Generator]]&lt;br /&gt;
[[File:LibrePDK.png|none|thumb|695x695px|ALibrePDK screen shot]]&lt;br /&gt;
It is responsible for generating discrete parts with specific parameters for a specific process.&lt;br /&gt;
&lt;br /&gt;
The properties of the parts can be optimized by utilizing the calibration values extracted from the measurements of taped out Danube River test wafers.&lt;br /&gt;
&lt;br /&gt;
== Adding a new technology ==&lt;br /&gt;
Technologies currently supported can be found in the technologies subfolder.&lt;br /&gt;
&lt;br /&gt;
https://gitlab.libresilicon.com/generator-tools/librepdk/-/tree/master/LibrePDK/technologies?ref_type=heads&lt;br /&gt;
&lt;br /&gt;
New technologies can be added by modifying &#039;&#039;&#039;scripts/update_technologies.sh&#039;&#039;&#039; and adding a tech.python script to the technologies folder.&lt;br /&gt;
&lt;br /&gt;
After that, LibrePDK should be capable of auto discovering the new process after running the update script.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
First please clone the repo&lt;br /&gt;
&lt;br /&gt;
 pip install [https://gitlab.libresilicon.com/generator-tools/librepdk.git https+git://gitlab.libresilicon.com/generator-tools/librepdk.git]&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to make sure that all the submodules and their submodules are cloned&lt;br /&gt;
&lt;br /&gt;
 git submodule update --init --recursive&lt;br /&gt;
&lt;br /&gt;
For placement of discrete componentes used in more complex components like Driver Circuits, OpAmps, etc. IdeaPlaceExPy is being used.&lt;br /&gt;
&lt;br /&gt;
IdeaPlaceExPy requires the Python system headers to be installed and the virtual env has to match the Python version with which it was compiled.&lt;br /&gt;
&lt;br /&gt;
=== Using LibrePDK in a Virtual Environment ===&lt;br /&gt;
It is recommended to use LibrePDK in a Python virtual environment to avoid dependency conflicts with&lt;br /&gt;
system-wide Python packages.&lt;br /&gt;
&lt;br /&gt;
After you&#039;ve installed all the below dependencies the recommended way of installing the remaining dependencies is to run&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
uv sync --no-cache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenVAF models ===&lt;br /&gt;
&lt;br /&gt;
IHP&#039;s SG13G2 technology node uses OpenVAF models for the ngspice simulation tool.&lt;br /&gt;
&lt;br /&gt;
The following script will make sure that rust and the OpenVAF tool are present and then&lt;br /&gt;
compiles the models into the osdi format and places them into the technology directory&lt;br /&gt;
ready to be used by LibrePDK.&lt;br /&gt;
&lt;br /&gt;
Simply run the following script and confirm the installation by checking for the LibrePDK/technologies/spice/SG13G2/devices/*/*.osdi files.&lt;br /&gt;
&lt;br /&gt;
 ./scripts/update_ngspice_extensions.sh&lt;br /&gt;
&lt;br /&gt;
=== LP solver ===&lt;br /&gt;
&lt;br /&gt;
Google now officially runs the project and you can get the most recent version from GitHub&lt;br /&gt;
&lt;br /&gt;
Install is by cloning and building it&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone https://github.com/lp-solve/lp_solve&lt;br /&gt;
pushd lp_solve/lpsolve55&lt;br /&gt;
rm -rf bin/ux64&lt;br /&gt;
sh ccc&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;	Then you can copy the shared object file in solve/lpsolve55/bin/ux64 into your /usr/lib64 and copy the headers with&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /usr/include/lpsolve&lt;br /&gt;
cp lp_solve/*.h /usr/include/lpsolve/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;OR, you can install the system package and devel package with your package manager&lt;br /&gt;
&lt;br /&gt;
=== Lemon ===&lt;br /&gt;
&lt;br /&gt;
That library has been developed by a Hungarian university which doesn&#039;t maintain their Mercurial setup. Best approach is to use the version you find in your distribution&lt;br /&gt;
=== Limbo ===&lt;br /&gt;
&lt;br /&gt;
The official version of Limbo has been a total mess when it comes to building libs and linking them. I had to make some severe modifications which makes CMake properly build shared object files and detects the system wide installation of the dependencies&lt;br /&gt;
using proper CMake detection functions&lt;br /&gt;
&lt;br /&gt;
Just run&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone https://gitlab.libresilicon.com/leviathan/limbo.git&lt;br /&gt;
mkdir Limbo/build&lt;br /&gt;
pushd Limbo/build&lt;br /&gt;
cmake ..&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Components =&lt;br /&gt;
LibrePDK provides generators for the basic components usually found within a VLSI/ULSI design, such as resistors, capacitors, diodes and transistors.&lt;br /&gt;
&lt;br /&gt;
== Capacitors ==&lt;br /&gt;
LibrePDK can calculate the specific geometry based on the device rules and available parameters for generating any desired target capacitance value. Below a 50pF capacitor can be  seen. You will notice the enormous dimensions of the structure.&lt;br /&gt;
[[File:50pF MiMCap (GF180A, 3.3V).png|none|thumb|300x300px]]&lt;br /&gt;
Usually we deal with femto Farad in VLSI design so you should never be in a situation where you have large capacitors on your chip.&lt;br /&gt;
&lt;br /&gt;
LibrePDK still can generate you a device, you just won&#039;t be happy about it.&lt;br /&gt;
&lt;br /&gt;
== Resistors ==&lt;br /&gt;
There&#039;s two types of resistor structures available: Meander and strip resistors&lt;br /&gt;
&lt;br /&gt;
LibrePDK automatically adds a guard ring around any resistor which should be on a well&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The meander here is 200 Ohms for GF180A@3.3V&#039;&#039;&#039;[[File:LibrePDK Meander Example.png|none|thumb|300x300px]]&#039;&#039;&#039;The meander here is 500 Ohms for GF180A@3.3V&#039;&#039;&#039;[[File:Strip Resistor Example.png|none|thumb|300x300px]]&lt;br /&gt;
&lt;br /&gt;
== Diodes ==&lt;br /&gt;
[[File:Diode Example.png|none|thumb|300x300px|Example of a diode]]&lt;br /&gt;
While normal fingered diodes now have been implemented Schottky diodes still are work in progress.&lt;br /&gt;
&lt;br /&gt;
== Schottky diodes ==&lt;br /&gt;
Those are not yet implemented&lt;br /&gt;
&lt;br /&gt;
== Transistors ==&lt;br /&gt;
In order to make sure that our transistors don&#039;t go up in flame, we have to take the hot carrier migration and thermal budget into consideration when we decide what transistor to use and whether it should have only one gate or should be fingered.&lt;br /&gt;
&lt;br /&gt;
LibrePDK takes care of this and chooses the right transistor with the right amount of fingers for you based on the target operating voltage and current you plan to pump through it, you provide.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can also overwrite the thermal budget which usually is assumed to be for an internal circuit which isn&#039;t bonded directly to the outside.&lt;br /&gt;
&lt;br /&gt;
When LibrePDK calculates that electron migration and thermal budget constraints don&#039;t allow for a single gate transistor it will dynamically create a fingered structure, either with bulk and source connected or not with the proper guard ring.&lt;br /&gt;
[[File:Fingered Transistor.png|none|thumb|300x300px|Example of a fingered transistor]]&lt;br /&gt;
Libre PDK may also decide to just generate a single gate transistor in cases where there&#039;s very little power involved&lt;br /&gt;
[[File:Single Gate Example.png|none|thumb|300x300px|Example of a single gate transistor]]&lt;br /&gt;
&lt;br /&gt;
== Pad Cells ==&lt;br /&gt;
Last but not least: It contains the [[Pad Cell Generator]] which produces beauties like this&lt;br /&gt;
[[File:30mA SG13G2@3V3 v2.png|none|thumb|356x356px]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Pad_Frame_Generator&amp;diff=685</id>
		<title>Pad Frame Generator</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Pad_Frame_Generator&amp;diff=685"/>
		<updated>2026-05-29T10:25:43Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Pad Frame v2 Example SG13G2@1V2.png|thumb]]&lt;br /&gt;
The Pad Frame Generator is part of the [[LibrePDK]]&lt;br /&gt;
It&#039;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.&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=684</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=684"/>
		<updated>2026-05-29T10:20:20Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
Here are some simulation values extracted from ngspice&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Peak PAD voltage:&#039;&#039;&#039; 1910.869 V &lt;br /&gt;
* &#039;&#039;&#039;Peak current:&#039;&#039;&#039; 1.314834 A &lt;br /&gt;
* &#039;&#039;&#039;Peak resistor power:&#039;&#039;&#039; 2.593 kW  That&#039;s over a 1.5 kΩ sense resistor, the power dissipated over the actual diodes is is only 3.144856 µJ&lt;br /&gt;
* &#039;&#039;&#039;Final dissipated energy:&#039;&#039;&#039; 3.144856 µJ&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the &#039;&#039;&#039;micro&#039;&#039;&#039; Jules range (3.144856 µJ)&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
Only in the beginning there&#039;s a huge peak in current 1.314834 A, but since it&#039;s only a burst of a few nano seconds the ESD diodes handle it with ease &lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be negligible due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a balance between electron mobility and thermal budget... took a while to code that. It&#039;s really complicated physics, but it&#039;s now all done in Python so you won&#039;t have to solve those partial differential equations yourself.&lt;br /&gt;
[[File:30mA SG13G2@1V2 v2.png|left|thumb|419x419px|&#039;&#039;&#039;30mA SG13G2@1V2&#039;&#039;&#039; ]]&lt;br /&gt;
[[File:30mA SG13G2@3V3 v2.png|thumb|335x335px|30mA SG13G2@3V3]]&lt;br /&gt;
Lets look at those two pad cells here. One is dimensionsed for 30mA at 1.2V and the other at 3.3V&lt;br /&gt;
&lt;br /&gt;
One would assume that the 3.3V transistors would be larger.&lt;br /&gt;
&lt;br /&gt;
However.&lt;br /&gt;
&lt;br /&gt;
The width of a channel (length of the gate) is being determined by &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;L_{gate} = I_{target}/I_{sat}&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;\left [ I_{sat} \right ] = \frac{mA}{uA} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That however has to be combined with the thermal budget, which gives a minimum area for the energy to be dissipated on.&lt;br /&gt;
&lt;br /&gt;
In the case of the 1.2V transistors the saturation current of the channel isn&#039;t high enough anyway for violating the minimum area requirement because it doesn&#039;t have additional doping like the IHP transistor lifted to 3.3V by additional HV doping.&lt;br /&gt;
&lt;br /&gt;
This doping improves the conductivity of the channel, so the gates had to be scaled up in order to cover enough space for dissipating the energy they conduct.&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=683</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=683"/>
		<updated>2026-05-29T09:56:25Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* The IHP SG13G2 case */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
Here are some simulation values extracted from ngspice&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Peak PAD voltage:&#039;&#039;&#039; 1910.869 V &lt;br /&gt;
* &#039;&#039;&#039;Peak current:&#039;&#039;&#039; 1.314834 A &lt;br /&gt;
* &#039;&#039;&#039;Peak resistor power:&#039;&#039;&#039; 2.593 kW  That&#039;s over a 1.5 kΩ sense resistor, the power dissipated over the actual diodes is is only 3.144856 µJ&lt;br /&gt;
* &#039;&#039;&#039;Final dissipated energy:&#039;&#039;&#039; 3.144856 µJ&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the &#039;&#039;&#039;micro&#039;&#039;&#039; Jules range (3.144856 µJ)&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
Only in the beginning there&#039;s a huge peak in current 1.314834 A, but since it&#039;s only a burst of a few nano seconds the ESD diodes handle it with ease &lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be negligible due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a balance between electron mobility and thermal budget... took a while to code that. It&#039;s really complicated physics, but it&#039;s now all done in Python so you won&#039;t have to solve those partial differential equations yourself.&lt;br /&gt;
[[File:30mA SG13G2@1V2 v2.png|left|thumb|419x419px|&#039;&#039;&#039;30mA SG13G2@1V2&#039;&#039;&#039; ]]&lt;br /&gt;
[[File:30mA SG13G2@3V3 v2.png|thumb|335x335px|30mA SG13G2@3V3]]&lt;br /&gt;
Lets look at those two pad cells here. One is dimensionsed for 30mA at 1.2V and the other at 3.3V&lt;br /&gt;
&lt;br /&gt;
One would assume that the 3.3V transistors would be larger.&lt;br /&gt;
&lt;br /&gt;
However.&lt;br /&gt;
&lt;br /&gt;
The width of a channel (length of the gate) is being determined by &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;L_{gate} = I_{target}/I_{sat}&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;\left [ I_{sat} \right ] = \frac{mA}{uA} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That however has to be combined with the thermal budget, which gives a minimum area for the energy to be dissipated on.&lt;br /&gt;
&lt;br /&gt;
In the case of the 1.2V transistors the saturation current of the channel isn&#039;t high enough anyway for violating the minimum area requirement because it doesn&#039;t have additional doping like the IHP transistor lifted to 3.3V by additional HV doping.&lt;br /&gt;
&lt;br /&gt;
This doping improves the conductivity of the channel, so the gates had to be scaled up in order to cover enough space for dissipating the energy they conduct.&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=682</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=682"/>
		<updated>2026-05-29T09:53:35Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* The IHP SG13G2 case */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
Here are some simulation values extracted from ngspice&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Peak PAD voltage:&#039;&#039;&#039; 1910.869 V &lt;br /&gt;
* &#039;&#039;&#039;Peak current:&#039;&#039;&#039; 1.314834 A &lt;br /&gt;
* &#039;&#039;&#039;Peak resistor power:&#039;&#039;&#039; 2.593 kW  That&#039;s over a 1.5 kΩ sense resistor, the power dissipated over the actual diodes is is only 3.144856 µJ&lt;br /&gt;
* &#039;&#039;&#039;Final dissipated energy:&#039;&#039;&#039; 3.144856 µJ&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the &#039;&#039;&#039;micro&#039;&#039;&#039; Jules range (3.144856 µJ)&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
Only in the beginning there&#039;s a huge peak in current 1.314834 A, but since it&#039;s only a burst of a few nano seconds the ESD diodes handle it with ease &lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be negligible due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a balance between electron mobility and thermal budget... took a while to code that. It&#039;s really complicated physics, but it&#039;s now all done in Python so you won&#039;t have to solve those partial differential equations yourself.&lt;br /&gt;
[[File:30mA SG13G2@1V2 v2.png|left|thumb|419x419px|&#039;&#039;&#039;30mA SG13G2@1V2&#039;&#039;&#039; ]]&lt;br /&gt;
[[File:30mA SG13G2@3V3 v2.png|thumb|335x335px|30mA SG13G2@3V3]]&lt;br /&gt;
Lets look at those two pad cells here. One is dimensionsed for 30mA at 1.2V and the other at 3.3V&lt;br /&gt;
&lt;br /&gt;
One would assume that the 3.3V transistors would be larger.&lt;br /&gt;
&lt;br /&gt;
However.&lt;br /&gt;
&lt;br /&gt;
The width of a channel (length of the gate) is being determined by &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;L_{gate} = I_{target}/I_{sat}&amp;lt;/math&amp;gt; with &amp;lt;math&amp;gt;\left [ I_{sat} \right ] = \frac{mA}{uA} &amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=681</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=681"/>
		<updated>2026-05-29T09:51:47Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* The IHP SG13G2 case */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
Here are some simulation values extracted from ngspice&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Peak PAD voltage:&#039;&#039;&#039; 1910.869 V &lt;br /&gt;
* &#039;&#039;&#039;Peak current:&#039;&#039;&#039; 1.314834 A &lt;br /&gt;
* &#039;&#039;&#039;Peak resistor power:&#039;&#039;&#039; 2.593 kW  That&#039;s over a 1.5 kΩ sense resistor, the power dissipated over the actual diodes is is only 3.144856 µJ&lt;br /&gt;
* &#039;&#039;&#039;Final dissipated energy:&#039;&#039;&#039; 3.144856 µJ&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the &#039;&#039;&#039;micro&#039;&#039;&#039; Jules range (3.144856 µJ)&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
Only in the beginning there&#039;s a huge peak in current 1.314834 A, but since it&#039;s only a burst of a few nano seconds the ESD diodes handle it with ease &lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be negligible due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a balance between electron mobility and thermal budget... took a while to code that. It&#039;s really complicated physics, but it&#039;s now all done in Python so you won&#039;t have to solve those partial differential equations yourself.&lt;br /&gt;
[[File:30mA SG13G2@1V2 v2.png|left|thumb|419x419px|&#039;&#039;&#039;30mA SG13G2@1V2&#039;&#039;&#039; ]]&lt;br /&gt;
[[File:30mA SG13G2@3V3 v2.png|thumb|335x335px|30mA SG13G2@3V3]]&lt;br /&gt;
Lets look at those two pad cells here. One is dimensionsed for 30mA at 1.2V and the other at 3.3V&lt;br /&gt;
&lt;br /&gt;
One would assume that the 3.3V transistors would be larger.&lt;br /&gt;
&lt;br /&gt;
However.&lt;br /&gt;
&lt;br /&gt;
The width of a channel (length of the gate) is being determined by &amp;lt;math display=&amp;quot;inline&amp;quot;&amp;gt;L_{gate} = I_{target}/I_{sat}&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=680</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=680"/>
		<updated>2026-05-29T09:51:15Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* The IHP SG13G2 @ 1.2V case */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
Here are some simulation values extracted from ngspice&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Peak PAD voltage:&#039;&#039;&#039; 1910.869 V &lt;br /&gt;
* &#039;&#039;&#039;Peak current:&#039;&#039;&#039; 1.314834 A &lt;br /&gt;
* &#039;&#039;&#039;Peak resistor power:&#039;&#039;&#039; 2.593 kW  That&#039;s over a 1.5 kΩ sense resistor, the power dissipated over the actual diodes is is only 3.144856 µJ&lt;br /&gt;
* &#039;&#039;&#039;Final dissipated energy:&#039;&#039;&#039; 3.144856 µJ&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the &#039;&#039;&#039;micro&#039;&#039;&#039; Jules range (3.144856 µJ)&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
Only in the beginning there&#039;s a huge peak in current 1.314834 A, but since it&#039;s only a burst of a few nano seconds the ESD diodes handle it with ease &lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be negligible due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
It&#039;s a balance between electron mobility and thermal budget... took a while to code that. It&#039;s really complicated physics, but it&#039;s now all done in Python so you won&#039;t have to solve those partial differential equations yourself.&lt;br /&gt;
[[File:30mA SG13G2@1V2 v2.png|left|thumb|419x419px|&#039;&#039;&#039;30mA SG13G2@1V2&#039;&#039;&#039; ]]&lt;br /&gt;
[[File:30mA SG13G2@3V3 v2.png|thumb|335x335px|30mA SG13G2@3V3]]&lt;br /&gt;
Lets look at those two pad cells here. One is dimensionsed for 30mA at 1.2V and the other at 3.3V&lt;br /&gt;
&lt;br /&gt;
One would assume that the 3.3V transistors would be larger.&lt;br /&gt;
&lt;br /&gt;
However.&lt;br /&gt;
&lt;br /&gt;
The width of a channel (length of the gate) is being determined by &amp;lt;math&amp;gt;L_{gate} = I_{target}/I_{sat}&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:30mA_SG13G2@3V3_v2.png&amp;diff=679</id>
		<title>File:30mA SG13G2@3V3 v2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:30mA_SG13G2@3V3_v2.png&amp;diff=679"/>
		<updated>2026-05-29T09:47:22Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;30mA SG13G2@3V3 v2&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=678</id>
		<title>Pad Cell Generator</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=678"/>
		<updated>2026-05-29T09:41:07Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* How to use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:30mA SG13G2@1V2 v2.png|thumb|&#039;&#039;&#039;Example 30mA SG13G2@1V2 (version 2)&#039;&#039;&#039;]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Existing Groundwork ==&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some works our generator will be based on:&lt;br /&gt;
&lt;br /&gt;
* Gowthami Nalla did some work with the logic circuit and the driver but it&#039;s specific to XFAB only; https://github.com/gowthaminalla/bidirectional-buffer/&lt;br /&gt;
* Very rudimentary development has been done on the ESD front: https://github.com/AishikAnalogCKTdesign/ESD&lt;br /&gt;
* Philip&#039;s pad frame generator (Perl): https://www2.futureware.at/~philipp/vsd2018/&lt;br /&gt;
* Philip&#039;s very basic Perl based pad cell generator (https://pdk.libresilicon.com/PadCellGenerator.zip)&lt;br /&gt;
** Perl based&lt;br /&gt;
** Not portable&lt;br /&gt;
** Needs smarter ESD protection&lt;br /&gt;
** Needs smarter IO config&lt;br /&gt;
** Doesn&#039;t have termination resistor configuration (needed for DDR3/DDR4 PHYs)&lt;br /&gt;
** Not even yet half finished&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
The Pad Cell Generator is part of [[LibrePDK]]&lt;br /&gt;
&lt;br /&gt;
Running the following script within the LibrePDK folder, after following the installation instructions...&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
uv run librepdk_padframe_generator -i tests/padframes/padframe_sg13g2_1v2.json&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;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)&lt;br /&gt;
[[File:Pad Frame v2 Example SG13G2@1V2.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Electrical Discharge Protection ==&lt;br /&gt;
Since we&#039;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.&lt;br /&gt;
&lt;br /&gt;
The whole math is being documented in [[Physics-Based Wire Sizing for I/O Pad Cells]]&lt;br /&gt;
&lt;br /&gt;
Subsequently the ngspice analysis and verification of the reverse solved hardware design can be found in [[ESD Verification]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=677</id>
		<title>Pad Cell Generator</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=677"/>
		<updated>2026-05-29T09:39:11Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:30mA SG13G2@1V2 v2.png|thumb|&#039;&#039;&#039;Example 30mA SG13G2@1V2 (version 2)&#039;&#039;&#039;]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Existing Groundwork ==&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some works our generator will be based on:&lt;br /&gt;
&lt;br /&gt;
* Gowthami Nalla did some work with the logic circuit and the driver but it&#039;s specific to XFAB only; https://github.com/gowthaminalla/bidirectional-buffer/&lt;br /&gt;
* Very rudimentary development has been done on the ESD front: https://github.com/AishikAnalogCKTdesign/ESD&lt;br /&gt;
* Philip&#039;s pad frame generator (Perl): https://www2.futureware.at/~philipp/vsd2018/&lt;br /&gt;
* Philip&#039;s very basic Perl based pad cell generator (https://pdk.libresilicon.com/PadCellGenerator.zip)&lt;br /&gt;
** Perl based&lt;br /&gt;
** Not portable&lt;br /&gt;
** Needs smarter ESD protection&lt;br /&gt;
** Needs smarter IO config&lt;br /&gt;
** Doesn&#039;t have termination resistor configuration (needed for DDR3/DDR4 PHYs)&lt;br /&gt;
** Not even yet half finished&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
The Pad Cell Generator is part of [[LibrePDK]]&lt;br /&gt;
&lt;br /&gt;
Running the following script within the LibrePDK folder, after following the installation instructions...&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
TECH=SG13G2&lt;br /&gt;
VOLTAGE=1.2&lt;br /&gt;
mkdir -p ihp_pads&lt;br /&gt;
pushd ihp_pads&lt;br /&gt;
uv run librepdk_padcell_generator -t $TECH -v $VOLTAGE -i 20,30,40,60&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;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)&lt;br /&gt;
[[File:Preliminary First Pad Frame generated.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Electrical Discharge Protection ==&lt;br /&gt;
Since we&#039;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.&lt;br /&gt;
&lt;br /&gt;
The whole math is being documented in [[Physics-Based Wire Sizing for I/O Pad Cells]]&lt;br /&gt;
&lt;br /&gt;
Subsequently the ngspice analysis and verification of the reverse solved hardware design can be found in [[ESD Verification]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=LibreSilicon_stack&amp;diff=676</id>
		<title>LibreSilicon stack</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=LibreSilicon_stack&amp;diff=676"/>
		<updated>2026-05-29T09:37:56Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* Pad Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LibreSilicon includes not only software but also a manufacturing process flow standard with recipes and machine designs.&lt;br /&gt;
A detailed overview with links goes onto this page.&lt;br /&gt;
&lt;br /&gt;
LibreSilicon can be roughly divided into two main categories, physical manufacturing as well as the tool chain part&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
For doing anything useful with your foundry, you need a way of verifying your setup, for which we provide you the test wafer generator [[Danube River]], then you need standard logic cells for synthesizing, placing and routing your layout, and of pad cells so that you can wire bond your chip;&lt;br /&gt;
&lt;br /&gt;
=== Process Verification ===&lt;br /&gt;
When setting up a new foundry, no matter the scale, the physical manufacturing needs to be verified, using a test wafer, for this purpose we provide a dynamic test wafer generator named [[Danube River]], which you can provide your own technology specs based on initial calculations for your setup and then verify and adjust your values until everything is correct.&lt;br /&gt;
[[File:Danube For New Foundry.png|none|thumb|653x653px]]&lt;br /&gt;
&lt;br /&gt;
=== Standard Cells ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Originally Philip was working on [[StdCellLib]], but he re-licensed it under Apache which kind of defeats the purpose of a project calling itself &#039;&#039;&#039;Libre&#039;&#039;&#039;Silicon. Because Leviathan was a bit triggered by this due to his definition of Libre being the same as the Free Software Foundation, which means, that it&#039;s supposed under a GNU Public License, he decided to work on introducing the functionality for placing and routing standard logic cells in [[LibrePDK]] as well, in addition to analog and pad cell generation.&lt;br /&gt;
&lt;br /&gt;
=== Pad Cells ===&lt;br /&gt;
The [[Pad Cell Generator]] is part of the [[LibrePDK]] and can be used to created custom sets of pad cells with custom rail voltages and you can even define a set of currents your pad frame is supposed to end up driving.&lt;br /&gt;
[[File:30mA SG13G2@1V2 v2.png|none|thumb|419x419px|30mA pad cell for IHPSG13G2 at 1.2V]]&lt;br /&gt;
The pad cell has such thin wires, because the ultimate wire width has to be determined based on the final current which is supposed to be driven by the overall pad frame the cells are being generated for.&lt;br /&gt;
=== Pad Frames ===&lt;br /&gt;
The [[Pad Frame Generator]] has the job of taking in a JSON with pin assignment for the East, North, South and West bank and then calculate the wire dimensions of the overall padframe based on the projected peak currents as well as to choose the right pad cell type for each assigned pin.&lt;br /&gt;
[[File:Pad Frame v2 Example SG13G2@1V2.png|none|thumb|Pad Frame Example SG13G2@1.2V]]&lt;br /&gt;
The resulting output will be a pad frame in Magic, GDS2, LEF and DEF format, which you can use for placing and routing your internal logic to.&lt;br /&gt;
&lt;br /&gt;
==Physical manufacturing==&lt;br /&gt;
&lt;br /&gt;
The physical manufacturing includes things like:&lt;br /&gt;
&lt;br /&gt;
* [[Chemical processing]]&lt;br /&gt;
* [[Photolithography]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:30mA_SG13G2@1V2_v2.png&amp;diff=675</id>
		<title>File:30mA SG13G2@1V2 v2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:30mA_SG13G2@1V2_v2.png&amp;diff=675"/>
		<updated>2026-05-29T09:37:17Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;30mA SG13G2@1V2  v2&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=LibreSilicon_stack&amp;diff=674</id>
		<title>LibreSilicon stack</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=LibreSilicon_stack&amp;diff=674"/>
		<updated>2026-05-29T09:28:30Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* Pad Frames */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LibreSilicon includes not only software but also a manufacturing process flow standard with recipes and machine designs.&lt;br /&gt;
A detailed overview with links goes onto this page.&lt;br /&gt;
&lt;br /&gt;
LibreSilicon can be roughly divided into two main categories, physical manufacturing as well as the tool chain part&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
For doing anything useful with your foundry, you need a way of verifying your setup, for which we provide you the test wafer generator [[Danube River]], then you need standard logic cells for synthesizing, placing and routing your layout, and of pad cells so that you can wire bond your chip;&lt;br /&gt;
&lt;br /&gt;
=== Process Verification ===&lt;br /&gt;
When setting up a new foundry, no matter the scale, the physical manufacturing needs to be verified, using a test wafer, for this purpose we provide a dynamic test wafer generator named [[Danube River]], which you can provide your own technology specs based on initial calculations for your setup and then verify and adjust your values until everything is correct.&lt;br /&gt;
[[File:Danube For New Foundry.png|none|thumb|653x653px]]&lt;br /&gt;
&lt;br /&gt;
=== Standard Cells ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Originally Philip was working on [[StdCellLib]], but he re-licensed it under Apache which kind of defeats the purpose of a project calling itself &#039;&#039;&#039;Libre&#039;&#039;&#039;Silicon. Because Leviathan was a bit triggered by this due to his definition of Libre being the same as the Free Software Foundation, which means, that it&#039;s supposed under a GNU Public License, he decided to work on introducing the functionality for placing and routing standard logic cells in [[LibrePDK]] as well, in addition to analog and pad cell generation.&lt;br /&gt;
&lt;br /&gt;
=== Pad Cells ===&lt;br /&gt;
The [[Pad Cell Generator]] is part of the [[LibrePDK]] and can be used to created custom sets of pad cells with custom rail voltages and you can even define a set of currents your pad frame is supposed to end up driving.&lt;br /&gt;
[[File:Io cell 20mA.png|none|thumb|20mA pad cell for IHPSG13G2 at 1.2V]]&lt;br /&gt;
The pad cell has such thin wires, because the ultimate wire width has to be determined based on the final current which is supposed to be driven by the overall pad frame the cells are being generated for.&lt;br /&gt;
=== Pad Frames ===&lt;br /&gt;
The [[Pad Frame Generator]] has the job of taking in a JSON with pin assignment for the East, North, South and West bank and then calculate the wire dimensions of the overall padframe based on the projected peak currents as well as to choose the right pad cell type for each assigned pin.&lt;br /&gt;
[[File:Pad Frame v2 Example SG13G2@1V2.png|none|thumb|Pad Frame Example SG13G2@1.2V]]&lt;br /&gt;
The resulting output will be a pad frame in Magic, GDS2, LEF and DEF format, which you can use for placing and routing your internal logic to.&lt;br /&gt;
&lt;br /&gt;
==Physical manufacturing==&lt;br /&gt;
&lt;br /&gt;
The physical manufacturing includes things like:&lt;br /&gt;
&lt;br /&gt;
* [[Chemical processing]]&lt;br /&gt;
* [[Photolithography]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:Pad_Frame_v2_Example_SG13G2@1V2.png&amp;diff=673</id>
		<title>File:Pad Frame v2 Example SG13G2@1V2.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:Pad_Frame_v2_Example_SG13G2@1V2.png&amp;diff=673"/>
		<updated>2026-05-29T09:27:55Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pad Frame v2 Example SG13G2@1V2&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Pad_Frame_Generator&amp;diff=672</id>
		<title>Pad Frame Generator</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Pad_Frame_Generator&amp;diff=672"/>
		<updated>2026-05-28T16:18:33Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Pad Frame Generator is part of the [[LibrePDK]][[File:Preliminary First Pad Frame generated.png|thumb|First Version of a Padframe of IHP&#039;s SG13G2 generated by LibrePDK (Still needs some work)]]It&#039;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.&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=671</id>
		<title>Pad Cell Generator</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=671"/>
		<updated>2026-05-28T16:17:06Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Io cell 20mA@1.2V.png|thumb|20mA Pad Cell for IHP&#039;s SG13G2@1.2V]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Existing Groundwork ==&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some works our generator will be based on:&lt;br /&gt;
&lt;br /&gt;
* Gowthami Nalla did some work with the logic circuit and the driver but it&#039;s specific to XFAB only; https://github.com/gowthaminalla/bidirectional-buffer/&lt;br /&gt;
* Very rudimentary development has been done on the ESD front: https://github.com/AishikAnalogCKTdesign/ESD&lt;br /&gt;
* Philip&#039;s pad frame generator (Perl): https://www2.futureware.at/~philipp/vsd2018/&lt;br /&gt;
* Philip&#039;s very basic Perl based pad cell generator (https://pdk.libresilicon.com/PadCellGenerator.zip)&lt;br /&gt;
** Perl based&lt;br /&gt;
** Not portable&lt;br /&gt;
** Needs smarter ESD protection&lt;br /&gt;
** Needs smarter IO config&lt;br /&gt;
** Doesn&#039;t have termination resistor configuration (needed for DDR3/DDR4 PHYs)&lt;br /&gt;
** Not even yet half finished&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
The Pad Cell Generator is part of [[LibrePDK]]&lt;br /&gt;
&lt;br /&gt;
Running the following script within the LibrePDK folder, after following the installation instructions...&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
TECH=SG13G2&lt;br /&gt;
VOLTAGE=1.2&lt;br /&gt;
mkdir -p ihp_pads&lt;br /&gt;
pushd ihp_pads&lt;br /&gt;
uv run librepdk_padcell_generator -t $TECH -v $VOLTAGE -i 20,30,40,60&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;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)&lt;br /&gt;
[[File:Preliminary First Pad Frame generated.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Electrical Discharge Protection ==&lt;br /&gt;
Since we&#039;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.&lt;br /&gt;
&lt;br /&gt;
The whole math is being documented in [[Physics-Based Wire Sizing for I/O Pad Cells]]&lt;br /&gt;
&lt;br /&gt;
Subsequently the ngspice analysis and verification of the reverse solved hardware design can be found in [[ESD Verification]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Pad_Frame_Generator&amp;diff=670</id>
		<title>Pad Frame Generator</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Pad_Frame_Generator&amp;diff=670"/>
		<updated>2026-05-28T16:16:33Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: Created page with &amp;quot;First Version of a Padframe of IHP&amp;#039;s SG13G2 generated by LibrePDK (Still needs some work)&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Preliminary First Pad Frame generated.png|thumb|First Version of a Padframe of IHP&#039;s SG13G2 generated by LibrePDK (Still needs some work)]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=669</id>
		<title>Pad Cell Generator</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=669"/>
		<updated>2026-05-28T16:15:58Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Io cell 20mA@1.2V.png|thumb|Io cell 20mA@1.2V]]&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Existing Groundwork ==&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some works our generator will be based on:&lt;br /&gt;
&lt;br /&gt;
* Gowthami Nalla did some work with the logic circuit and the driver but it&#039;s specific to XFAB only; https://github.com/gowthaminalla/bidirectional-buffer/&lt;br /&gt;
* Very rudimentary development has been done on the ESD front: https://github.com/AishikAnalogCKTdesign/ESD&lt;br /&gt;
* Philip&#039;s pad frame generator (Perl): https://www2.futureware.at/~philipp/vsd2018/&lt;br /&gt;
* Philip&#039;s very basic Perl based pad cell generator (https://pdk.libresilicon.com/PadCellGenerator.zip)&lt;br /&gt;
** Perl based&lt;br /&gt;
** Not portable&lt;br /&gt;
** Needs smarter ESD protection&lt;br /&gt;
** Needs smarter IO config&lt;br /&gt;
** Doesn&#039;t have termination resistor configuration (needed for DDR3/DDR4 PHYs)&lt;br /&gt;
** Not even yet half finished&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
The Pad Cell Generator is part of [[LibrePDK]]&lt;br /&gt;
&lt;br /&gt;
Running the following script within the LibrePDK folder, after following the installation instructions...&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
TECH=SG13G2&lt;br /&gt;
VOLTAGE=1.2&lt;br /&gt;
mkdir -p ihp_pads&lt;br /&gt;
pushd ihp_pads&lt;br /&gt;
uv run librepdk_padcell_generator -t $TECH -v $VOLTAGE -i 20,30,40,60&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;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)&lt;br /&gt;
[[File:Preliminary First Pad Frame generated.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Electrical Discharge Protection ==&lt;br /&gt;
Since we&#039;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.&lt;br /&gt;
&lt;br /&gt;
The whole math is being documented in [[Physics-Based Wire Sizing for I/O Pad Cells]]&lt;br /&gt;
&lt;br /&gt;
Subsequently the ngspice analysis and verification of the reverse solved hardware design can be found in [[ESD Verification]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=668</id>
		<title>Pad Cell Generator</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=668"/>
		<updated>2026-05-28T16:15:33Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Existing Groundwork ==&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some works our generator will be based on:&lt;br /&gt;
&lt;br /&gt;
* Gowthami Nalla did some work with the logic circuit and the driver but it&#039;s specific to XFAB only; https://github.com/gowthaminalla/bidirectional-buffer/&lt;br /&gt;
* Very rudimentary development has been done on the ESD front: https://github.com/AishikAnalogCKTdesign/ESD&lt;br /&gt;
* Philip&#039;s pad frame generator (Perl): https://www2.futureware.at/~philipp/vsd2018/&lt;br /&gt;
* Philip&#039;s very basic Perl based pad cell generator (https://pdk.libresilicon.com/PadCellGenerator.zip)&lt;br /&gt;
** Perl based&lt;br /&gt;
** Not portable&lt;br /&gt;
** Needs smarter ESD protection&lt;br /&gt;
** Needs smarter IO config&lt;br /&gt;
** Doesn&#039;t have termination resistor configuration (needed for DDR3/DDR4 PHYs)&lt;br /&gt;
** Not even yet half finished&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
The Pad Cell Generator is part of [[LibrePDK]]&lt;br /&gt;
&lt;br /&gt;
Running the following script within the LibrePDK folder, after following the installation instructions...&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
TECH=SG13G2&lt;br /&gt;
VOLTAGE=1.2&lt;br /&gt;
mkdir -p ihp_pads&lt;br /&gt;
pushd ihp_pads&lt;br /&gt;
uv run librepdk_padcell_generator -t $TECH -v $VOLTAGE -i 20,30,40,60&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;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)&lt;br /&gt;
[[File:Preliminary First Pad Frame generated.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Electrical Discharge Protection ==&lt;br /&gt;
Since we&#039;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.&lt;br /&gt;
&lt;br /&gt;
The whole math is being documented in [[Physics-Based Wire Sizing for I/O Pad Cells]]&lt;br /&gt;
&lt;br /&gt;
Subsequently the ngspice analysis and verification of the reverse solved hardware design can be found in [[ESD Verification]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=LibreSilicon_stack&amp;diff=667</id>
		<title>LibreSilicon stack</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=LibreSilicon_stack&amp;diff=667"/>
		<updated>2026-05-28T16:15:04Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* Pad Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LibreSilicon includes not only software but also a manufacturing process flow standard with recipes and machine designs.&lt;br /&gt;
A detailed overview with links goes onto this page.&lt;br /&gt;
&lt;br /&gt;
LibreSilicon can be roughly divided into two main categories, physical manufacturing as well as the tool chain part&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
For doing anything useful with your foundry, you need a way of verifying your setup, for which we provide you the test wafer generator [[Danube River]], then you need standard logic cells for synthesizing, placing and routing your layout, and of pad cells so that you can wire bond your chip;&lt;br /&gt;
&lt;br /&gt;
=== Process Verification ===&lt;br /&gt;
When setting up a new foundry, no matter the scale, the physical manufacturing needs to be verified, using a test wafer, for this purpose we provide a dynamic test wafer generator named [[Danube River]], which you can provide your own technology specs based on initial calculations for your setup and then verify and adjust your values until everything is correct.&lt;br /&gt;
[[File:Danube For New Foundry.png|none|thumb|653x653px]]&lt;br /&gt;
&lt;br /&gt;
=== Standard Cells ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Originally Philip was working on [[StdCellLib]], but he re-licensed it under Apache which kind of defeats the purpose of a project calling itself &#039;&#039;&#039;Libre&#039;&#039;&#039;Silicon. Because Leviathan was a bit triggered by this due to his definition of Libre being the same as the Free Software Foundation, which means, that it&#039;s supposed under a GNU Public License, he decided to work on introducing the functionality for placing and routing standard logic cells in [[LibrePDK]] as well, in addition to analog and pad cell generation.&lt;br /&gt;
&lt;br /&gt;
=== Pad Cells ===&lt;br /&gt;
The [[Pad Cell Generator]] is part of the [[LibrePDK]] and can be used to created custom sets of pad cells with custom rail voltages and you can even define a set of currents your pad frame is supposed to end up driving.&lt;br /&gt;
[[File:Io cell 20mA.png|none|thumb|20mA pad cell for IHPSG13G2 at 1.2V]]&lt;br /&gt;
The pad cell has such thin wires, because the ultimate wire width has to be determined based on the final current which is supposed to be driven by the overall pad frame the cells are being generated for.&lt;br /&gt;
=== Pad Frames ===&lt;br /&gt;
The [[Pad Frame Generator]] has the job of taking in a JSON with pin assignment for the East, North, South and West bank and then calculate the wire dimensions of the overall padframe based on the projected peak currents as well as to choose the right pad cell type for each assigned pin.[[File:Preliminary First Pad Frame generated.png|thumb|An example of an early result of LibrePDK|none]]&lt;br /&gt;
&lt;br /&gt;
The resulting output will be a pad frame in Magic, GDS2, LEF and DEF format, which you can use for placing and routing your internal logic to.&lt;br /&gt;
&lt;br /&gt;
==Physical manufacturing==&lt;br /&gt;
&lt;br /&gt;
The physical manufacturing includes things like:&lt;br /&gt;
&lt;br /&gt;
* [[Chemical processing]]&lt;br /&gt;
* [[Photolithography]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=LibreSilicon_stack&amp;diff=666</id>
		<title>LibreSilicon stack</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=LibreSilicon_stack&amp;diff=666"/>
		<updated>2026-05-28T16:11:19Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* Pad Cells */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LibreSilicon includes not only software but also a manufacturing process flow standard with recipes and machine designs.&lt;br /&gt;
A detailed overview with links goes onto this page.&lt;br /&gt;
&lt;br /&gt;
LibreSilicon can be roughly divided into two main categories, physical manufacturing as well as the tool chain part&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
For doing anything useful with your foundry, you need a way of verifying your setup, for which we provide you the test wafer generator [[Danube River]], then you need standard logic cells for synthesizing, placing and routing your layout, and of pad cells so that you can wire bond your chip;&lt;br /&gt;
&lt;br /&gt;
=== Process Verification ===&lt;br /&gt;
When setting up a new foundry, no matter the scale, the physical manufacturing needs to be verified, using a test wafer, for this purpose we provide a dynamic test wafer generator named [[Danube River]], which you can provide your own technology specs based on initial calculations for your setup and then verify and adjust your values until everything is correct.&lt;br /&gt;
[[File:Danube For New Foundry.png|none|thumb|653x653px]]&lt;br /&gt;
&lt;br /&gt;
=== Standard Cells ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Originally Philip was working on [[StdCellLib]], but he re-licensed it under Apache which kind of defeats the purpose of a project calling itself &#039;&#039;&#039;Libre&#039;&#039;&#039;Silicon. Because Leviathan was a bit triggered by this due to his definition of Libre being the same as the Free Software Foundation, which means, that it&#039;s supposed under a GNU Public License, he decided to work on introducing the functionality for placing and routing standard logic cells in [[LibrePDK]] as well, in addition to analog and pad cell generation.&lt;br /&gt;
&lt;br /&gt;
=== Pad Cells ===&lt;br /&gt;
The [[Pad Cell Generator]] is part of the [[LibrePDK]] and can be used to created custom sets of pad cells with custom rail voltages and you can even define a set of currents your pad frame is supposed to end up driving.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Pad Frames ===&lt;br /&gt;
[[File:Preliminary First Pad Frame generated.png|thumb|An example of an early result of LibrePDK|none]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Physical manufacturing==&lt;br /&gt;
&lt;br /&gt;
The physical manufacturing includes things like:&lt;br /&gt;
&lt;br /&gt;
* [[Chemical processing]]&lt;br /&gt;
* [[Photolithography]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=LibreSilicon_stack&amp;diff=665</id>
		<title>LibreSilicon stack</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=LibreSilicon_stack&amp;diff=665"/>
		<updated>2026-05-28T16:10:42Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;LibreSilicon includes not only software but also a manufacturing process flow standard with recipes and machine designs.&lt;br /&gt;
A detailed overview with links goes onto this page.&lt;br /&gt;
&lt;br /&gt;
LibreSilicon can be roughly divided into two main categories, physical manufacturing as well as the tool chain part&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
For doing anything useful with your foundry, you need a way of verifying your setup, for which we provide you the test wafer generator [[Danube River]], then you need standard logic cells for synthesizing, placing and routing your layout, and of pad cells so that you can wire bond your chip;&lt;br /&gt;
&lt;br /&gt;
=== Process Verification ===&lt;br /&gt;
When setting up a new foundry, no matter the scale, the physical manufacturing needs to be verified, using a test wafer, for this purpose we provide a dynamic test wafer generator named [[Danube River]], which you can provide your own technology specs based on initial calculations for your setup and then verify and adjust your values until everything is correct.&lt;br /&gt;
[[File:Danube For New Foundry.png|none|thumb|653x653px]]&lt;br /&gt;
&lt;br /&gt;
=== Standard Cells ===&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Originally Philip was working on [[StdCellLib]], but he re-licensed it under Apache which kind of defeats the purpose of a project calling itself &#039;&#039;&#039;Libre&#039;&#039;&#039;Silicon. Because Leviathan was a bit triggered by this due to his definition of Libre being the same as the Free Software Foundation, which means, that it&#039;s supposed under a GNU Public License, he decided to work on introducing the functionality for placing and routing standard logic cells in [[LibrePDK]] as well, in addition to analog and pad cell generation.&lt;br /&gt;
&lt;br /&gt;
=== Pad Cells ===&lt;br /&gt;
[[File:Preliminary First Pad Frame generated.png|thumb|An example of an early result of LibrePDK|none]]&lt;br /&gt;
The [[Pad Cell Generator]] is part of the [[LibrePDK]] and can be used to created custom sets of pad cells with custom rail voltages and you can even define a set of currents your pad frame is supposed to end up driving.&lt;br /&gt;
&lt;br /&gt;
=== Pad Frames ===&lt;br /&gt;
&lt;br /&gt;
==Physical manufacturing==&lt;br /&gt;
&lt;br /&gt;
The physical manufacturing includes things like:&lt;br /&gt;
&lt;br /&gt;
* [[Chemical processing]]&lt;br /&gt;
* [[Photolithography]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Basic_Tooling&amp;diff=664</id>
		<title>Basic Tooling</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Basic_Tooling&amp;diff=664"/>
		<updated>2026-05-28T14:26:15Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: Created page with &amp;quot;In order to not have to rely on foundries anymore and to truly democratize semiconductor manufacturing equipment, and eliminating the risk of supply chain attacks by eliminating the supply chain all together, a minimum viable lab setup is needed for making semiconductor structures in your shed.  In order to manufacture transistors, you need the capability of performing the below basic physical operations on your sample  == Lower Particle Count in the Air ==  == Heat Trea...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In order to not have to rely on foundries anymore and to truly democratize semiconductor manufacturing equipment, and eliminating the risk of supply chain attacks by eliminating the supply chain all together, a minimum viable lab setup is needed for making semiconductor structures in your shed.&lt;br /&gt;
&lt;br /&gt;
In order to manufacture transistors, you need the capability of performing the below basic physical operations on your sample&lt;br /&gt;
&lt;br /&gt;
== Lower Particle Count in the Air ==&lt;br /&gt;
&lt;br /&gt;
== Heat Treatment ==&lt;br /&gt;
&lt;br /&gt;
== Photo Lithography ==&lt;br /&gt;
&lt;br /&gt;
== Etching ==&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=663</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=663"/>
		<updated>2026-05-28T01:10:44Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* ESD Waveforms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
Here are some simulation values extracted from ngspice&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Peak PAD voltage:&#039;&#039;&#039; 1910.869 V &lt;br /&gt;
* &#039;&#039;&#039;Peak current:&#039;&#039;&#039; 1.314834 A &lt;br /&gt;
* &#039;&#039;&#039;Peak resistor power:&#039;&#039;&#039; 2.593 kW  That&#039;s over a 1.5 kΩ sense resistor, the power dissipated over the actual diodes is is only 3.144856 µJ&lt;br /&gt;
* &#039;&#039;&#039;Final dissipated energy:&#039;&#039;&#039; 3.144856 µJ&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the &#039;&#039;&#039;micro&#039;&#039;&#039; Jules range (3.144856 µJ)&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
Only in the beginning there&#039;s a huge peak in current 1.314834 A, but since it&#039;s only a burst of a few nano seconds the ESD diodes handle it with ease &lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be negligible due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 1.2V case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 3.3V case ===&lt;br /&gt;
[[File:Io cell 20mA.png|none|thumb]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=662</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=662"/>
		<updated>2026-05-28T01:09:18Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* ESD path: Bonding Path to VSS ESD and VDD ESD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
Here are some simulation values extracted from ngspice&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Peak PAD voltage:&#039;&#039;&#039; 1910.869 V &lt;br /&gt;
* &#039;&#039;&#039;Peak current:&#039;&#039;&#039; 1.314834 A &lt;br /&gt;
* &#039;&#039;&#039;Peak resistor power:&#039;&#039;&#039; 2.593 kW  That&#039;s over a 1.5 kΩ sense resistor, the power dissipated over the actual diodes is is only 3.144856 µJ&lt;br /&gt;
* &#039;&#039;&#039;Final dissipated energy:&#039;&#039;&#039; 3.144856 µJ&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the &#039;&#039;&#039;micro&#039;&#039;&#039; Jules range (3.144856 µJ)&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
Only in the beginning there&#039;s a huge peak &lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be negligible due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 1.2V case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 3.3V case ===&lt;br /&gt;
[[File:Io cell 20mA.png|none|thumb]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=661</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=661"/>
		<updated>2026-05-28T01:08:54Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* ESD Waveforms */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
Here are some simulation values extracted from ngspice&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Peak PAD voltage:&#039;&#039;&#039; 1910.869 V &lt;br /&gt;
* &#039;&#039;&#039;Peak current:&#039;&#039;&#039; 1.314834 A &lt;br /&gt;
* &#039;&#039;&#039;Peak resistor power:&#039;&#039;&#039; 2.593 kW  That&#039;s over a 1.5kOhm sense resistor, the power dissipated over the actual diodes is is only 3.144856 µJ&lt;br /&gt;
* &#039;&#039;&#039;Final dissipated energy:&#039;&#039;&#039; 3.144856 µJ&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the &#039;&#039;&#039;micro&#039;&#039;&#039; Jules range (3.144856 µJ)&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
Only in the beginning there&#039;s a huge peak &lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be negligible due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 1.2V case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 3.3V case ===&lt;br /&gt;
[[File:Io cell 20mA.png|none|thumb]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=660</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=660"/>
		<updated>2026-05-28T00:45:42Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the micro Jules range&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be neglectable due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 1.2V case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=659</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=659"/>
		<updated>2026-05-28T00:45:03Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the micro Jules range&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
[[File:HBM ESD dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
Hbm esd dissipation (Diodes) SG13G2@1.2V&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be neglectable due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 1.2V case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=658</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=658"/>
		<updated>2026-05-28T00:43:16Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
File:Hbm esd dissipation (Diodes) SG13G2@3.3V.pngHbm esd dissipation (Diodes) SG13G2@1.2V&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small&lt;br /&gt;
[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
Hbm esd dissipation (Diodes) SG13G2@1.2V&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be neglectable due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 1.2V case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the micro Jules range&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:HBM_ESD_dissipation_SG13G2@1.2V.png&amp;diff=657</id>
		<title>File:HBM ESD dissipation SG13G2@1.2V.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:HBM_ESD_dissipation_SG13G2@1.2V.png&amp;diff=657"/>
		<updated>2026-05-28T00:42:08Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;HBM ESD dissipation SG13G2@1.2V&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=656</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=656"/>
		<updated>2026-05-28T00:23:22Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* HBM ESD Zoomed In */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
File:Hbm esd dissipation (Diodes) SG13G2@3.3V.pngHbm esd dissipation (Diodes) SG13G2@1.2V&lt;br /&gt;
&lt;br /&gt;
[[:File:Hbm esd dissipation.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small&lt;br /&gt;
[[File:Hbm esd waveforms.png|none|thumb|335x335px]]&lt;br /&gt;
Hbm esd dissipation (Diodes) SG13G2@1.2V&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be neglectable due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 1.2V case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the micro Jules range&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=655</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=655"/>
		<updated>2026-05-28T00:22:25Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
&lt;br /&gt;
File:Hbm esd dissipation (Diodes) SG13G2@3.3V.pngHbm esd dissipation (Diodes) SG13G2@1.2V&lt;br /&gt;
&lt;br /&gt;
[[:File:Hbm esd dissipation.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small&lt;br /&gt;
[[File:Hbm esd waveforms.png|none|thumb]]&lt;br /&gt;
Hbm esd dissipation (Diodes) SG13G2@1.2V&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be neglectable due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 1.2V case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the micro Jules range&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing[[File:Hbm esd dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.[[File:Hbm esd waveforms SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Zoomed In ====&lt;br /&gt;
[[File:Hbm esd zoom SG13G2@1.2V.png|alt=Hbm esd zoom SG13G2@1.2V|none|thumb|Hbm esd zoom SG13G2@1.2V]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:Hbm_esd_waveforms.png&amp;diff=654</id>
		<title>File:Hbm esd waveforms.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:Hbm_esd_waveforms.png&amp;diff=654"/>
		<updated>2026-05-28T00:17:46Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: HBM ESD waveform SG13G2@1.2V&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
HBM ESD waveform SG13G2@1.2V&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=651</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=651"/>
		<updated>2026-05-27T23:46:04Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path: Bonding Path to VSS ESD and VDD ESD ==&lt;br /&gt;
The energy which would otherwise go through the internal digital logic takes the alternative path of least resistance, which is the two diodes (we&#039;re not generating Schottky diodes yet, see the list of devices in [[LibrePDK]]), which we put as close to the bonding pad as possible.&lt;br /&gt;
&lt;br /&gt;
Here a quick drawing to illustrate the configuration.&lt;br /&gt;
[[File:PAD-VDD-VSS ESD path.png|none|thumb|200x200px]]&lt;br /&gt;
Inthe case of IHP SG13G2 @ 1.2V the discharge simulation looks like plotted below.&lt;br /&gt;
[[File:Hbm esd dissipation (Diodes) SG13G2@3.3V.png|none|thumb|Hbm esd dissipation (Diodes) SG13G2@1.2V]]&lt;br /&gt;
You can see how the voltage on the bonding pad drops while the current and power stays very small&lt;br /&gt;
[[File:Hbm esd waveforms.png|none|thumb]]&lt;br /&gt;
Hbm esd dissipation (Diodes) SG13G2@1.2V&lt;br /&gt;
&lt;br /&gt;
Just as dimensionsed, the ESD protection does its job&lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The second test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be neglectable due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 1.2V case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the micro Jules range&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing[[File:Hbm esd dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.[[File:Hbm esd waveforms SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Zoomed In ====&lt;br /&gt;
[[File:Hbm esd zoom SG13G2@1.2V.png|alt=Hbm esd zoom SG13G2@1.2V|none|thumb|Hbm esd zoom SG13G2@1.2V]]&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 3.3V case ===&lt;br /&gt;
&lt;br /&gt;
When you look at this thing here and its simulation result, it&#039;s no surprise that it has the same results as the 1.2V one, because they&#039;ve been dimensioned based on the same math.[[File:Io cell 20mA.png|none|thumb|IHP cell for 20mA @ 3.3V]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
[[File:Hbm esd dissipation SG13G2@3.3V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
[[File:Hbm esd waveforms SG13G2@3.3V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Zoomed In ====&lt;br /&gt;
[[File:Hbm esd zoom SG13G2@3.3V.png|none|thumb]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:PAD-VDD-VSS_ESD_path.png&amp;diff=650</id>
		<title>File:PAD-VDD-VSS ESD path.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:PAD-VDD-VSS_ESD_path.png&amp;diff=650"/>
		<updated>2026-05-27T23:44:30Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;PAD/VDD/VSS ESD path&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=647</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=647"/>
		<updated>2026-05-26T19:17:08Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== ESD path from bonding to internal logic ==&lt;br /&gt;
The first test is the simulation of whether we have a calculated break through between the external bonding pad and the internal GPIO logic going into the digital core logic (center of the die)&lt;br /&gt;
[[File:ESD path from outside to internal.png|none|thumb]]&lt;br /&gt;
As you can see (hopefully) in the drawing I quickly made here in my KolourPaint, we simulate the ESD breakthrough path, which is expected to be neglectable due to our backwards calculation, from the outside pad based on the Human Body Model through the pad cell, through the digital logic to ground.&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 1.2V case ===&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the micro Jules range&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing[[File:Hbm esd dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.[[File:Hbm esd waveforms SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Zoomed In ====&lt;br /&gt;
[[File:Hbm esd zoom SG13G2@1.2V.png|alt=Hbm esd zoom SG13G2@1.2V|none|thumb|Hbm esd zoom SG13G2@1.2V]]&lt;br /&gt;
&lt;br /&gt;
=== The IHP SG13G2 @ 3.3V case ===&lt;br /&gt;
&lt;br /&gt;
When you look at this thing here and its simulation result, it&#039;s no surprise that it has the same results as the 1.2V one, because they&#039;ve been dimensioned based on the same math.[[File:Io cell 20mA.png|none|thumb|IHP cell for 20mA @ 3.3V]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Dissipation ====&lt;br /&gt;
[[File:Hbm esd dissipation SG13G2@3.3V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== ESD Waveforms ====&lt;br /&gt;
[[File:Hbm esd waveforms SG13G2@3.3V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
==== HBM ESD Zoomed In ====&lt;br /&gt;
[[File:Hbm esd zoom SG13G2@3.3V.png|none|thumb]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=File:ESD_path_from_outside_to_internal.png&amp;diff=646</id>
		<title>File:ESD path from outside to internal.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=File:ESD_path_from_outside_to_internal.png&amp;diff=646"/>
		<updated>2026-05-26T19:15:19Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I quickly made it in KolourPaint&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=LibrePDK&amp;diff=645</id>
		<title>LibrePDK</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=LibrePDK&amp;diff=645"/>
		<updated>2026-05-26T02:35:29Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The LibrePDK is the library driving [[Danube River]] and the [[Pad Cell Generator]]&lt;br /&gt;
[[File:LibrePDK.png|none|thumb|695x695px|ALibrePDK screen shot]]&lt;br /&gt;
It is responsible for generating discrete parts with specific parameters for a specific process.&lt;br /&gt;
&lt;br /&gt;
The properties of the parts can be optimized by utilizing the calibration values extracted from the measurements of taped out Danube River test wafers.&lt;br /&gt;
&lt;br /&gt;
== Adding a new technology ==&lt;br /&gt;
Technologies currently supported can be found in the technologies subfolder.&lt;br /&gt;
&lt;br /&gt;
https://gitlab.libresilicon.com/generator-tools/librepdk/-/tree/master/LibrePDK/technologies?ref_type=heads&lt;br /&gt;
&lt;br /&gt;
New technologies can be added by modifying &#039;&#039;&#039;scripts/update_technologies.sh&#039;&#039;&#039; and adding a tech.python script to the technologies folder.&lt;br /&gt;
&lt;br /&gt;
After that, LibrePDK should be capable of auto discovering the new process after running the update script.&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
First please clone the repo&lt;br /&gt;
&lt;br /&gt;
 pip install [https://gitlab.libresilicon.com/generator-tools/librepdk.git https+git://gitlab.libresilicon.com/generator-tools/librepdk.git]&lt;br /&gt;
&lt;br /&gt;
Don&#039;t forget to make sure that all the submodules and their submodules are cloned&lt;br /&gt;
&lt;br /&gt;
 git submodule update --init --recursive&lt;br /&gt;
&lt;br /&gt;
For placement of discrete componentes used in more complex components like Driver Circuits, OpAmps, etc. IdeaPlaceExPy is being used.&lt;br /&gt;
&lt;br /&gt;
IdeaPlaceExPy requires the Python system headers to be installed and the virtual env has to match the Python version with which it was compiled.&lt;br /&gt;
&lt;br /&gt;
=== Using LibrePDK in a Virtual Environment ===&lt;br /&gt;
It is recommended to use LibrePDK in a Python virtual environment to avoid dependency conflicts with&lt;br /&gt;
system-wide Python packages.&lt;br /&gt;
&lt;br /&gt;
After you&#039;ve installed all the below dependencies the recommended way of installing the remaining dependencies is to run&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
uv sync --no-cache&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenVAF models ===&lt;br /&gt;
&lt;br /&gt;
IHP&#039;s SG13G2 technology node uses OpenVAF models for the ngspice simulation tool.&lt;br /&gt;
&lt;br /&gt;
The following script will make sure that rust and the OpenVAF tool are present and then&lt;br /&gt;
compiles the models into the osdi format and places them into the technology directory&lt;br /&gt;
ready to be used by LibrePDK.&lt;br /&gt;
&lt;br /&gt;
Simply run the following script and confirm the installation by checking for the LibrePDK/technologies/spice/SG13G2/devices/*/*.osdi files.&lt;br /&gt;
&lt;br /&gt;
 ./scripts/update_ngspice_extensions.sh&lt;br /&gt;
&lt;br /&gt;
=== LP solver ===&lt;br /&gt;
&lt;br /&gt;
Google now officially runs the project and you can get the most recent version from GitHub&lt;br /&gt;
&lt;br /&gt;
Install is by cloning and building it&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone https://github.com/lp-solve/lp_solve&lt;br /&gt;
pushd lp_solve/lpsolve55&lt;br /&gt;
rm -rf bin/ux64&lt;br /&gt;
sh ccc&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;	Then you can copy the shared object file in solve/lpsolve55/bin/ux64 into your /usr/lib64 and copy the headers with&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
mkdir /usr/include/lpsolve&lt;br /&gt;
cp lp_solve/*.h /usr/include/lpsolve/&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;OR, you can install the system package and devel package with your package manager&lt;br /&gt;
&lt;br /&gt;
=== Lemon ===&lt;br /&gt;
&lt;br /&gt;
That library has been developed by a Hungarian university which doesn&#039;t maintain their Mercurial setup. Best approach is to use the version you find in your distribution&lt;br /&gt;
=== Limbo ===&lt;br /&gt;
&lt;br /&gt;
The official version of Limbo has been a total mess when it comes to building libs and linking them. I had to make some severe modifications which makes CMake properly build shared object files and detects the system wide installation of the dependencies&lt;br /&gt;
using proper CMake detection functions&lt;br /&gt;
&lt;br /&gt;
Just run&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone https://gitlab.libresilicon.com/leviathan/limbo.git&lt;br /&gt;
mkdir Limbo/build&lt;br /&gt;
pushd Limbo/build&lt;br /&gt;
cmake ..&lt;br /&gt;
make&lt;br /&gt;
make install&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Components =&lt;br /&gt;
LibrePDK provides generators for the basic components usually found within a VLSI/ULSI design, such as resistors, capacitors, diodes and transistors.&lt;br /&gt;
&lt;br /&gt;
== Capacitors ==&lt;br /&gt;
LibrePDK can calculate the specific geometry based on the device rules and available parameters for generating any desired target capacitance value. Below a 50pF capacitor can be  seen. You will notice the enormous dimensions of the structure.&lt;br /&gt;
[[File:50pF MiMCap (GF180A, 3.3V).png|none|thumb|300x300px]]&lt;br /&gt;
Usually we deal with femto Farad in VLSI design so you should never be in a situation where you have large capacitors on your chip.&lt;br /&gt;
&lt;br /&gt;
LibrePDK still can generate you a device, you just won&#039;t be happy about it.&lt;br /&gt;
&lt;br /&gt;
== Resistors ==&lt;br /&gt;
There&#039;s two types of resistor structures available: Meander and strip resistors&lt;br /&gt;
&lt;br /&gt;
LibrePDK automatically adds a guard ring around any resistor which should be on a well&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The meander here is 200 Ohms for GF180A@3.3V&#039;&#039;&#039;[[File:LibrePDK Meander Example.png|none|thumb|300x300px]]&#039;&#039;&#039;The meander here is 500 Ohms for GF180A@3.3V&#039;&#039;&#039;[[File:Strip Resistor Example.png|none|thumb|300x300px]]&lt;br /&gt;
&lt;br /&gt;
== Diodes ==&lt;br /&gt;
[[File:Diode Example.png|none|thumb|300x300px|Example of a diode]]&lt;br /&gt;
While normal fingered diodes now have been implemented Schottky diodes still are work in progress.&lt;br /&gt;
&lt;br /&gt;
== Schottky diodes ==&lt;br /&gt;
Those are not yet implemented&lt;br /&gt;
&lt;br /&gt;
== Transistors ==&lt;br /&gt;
In order to make sure that our transistors don&#039;t go up in flame, we have to take the hot carrier migration and thermal budget into consideration when we decide what transistor to use and whether it should have only one gate or should be fingered.&lt;br /&gt;
&lt;br /&gt;
LibrePDK takes care of this and chooses the right transistor with the right amount of fingers for you based on the target operating voltage and current you plan to pump through it, you provide.&lt;br /&gt;
&lt;br /&gt;
Additionally, you can also overwrite the thermal budget which usually is assumed to be for an internal circuit which isn&#039;t bonded directly to the outside.&lt;br /&gt;
&lt;br /&gt;
When LibrePDK calculates that electron migration and thermal budget constraints don&#039;t allow for a single gate transistor it will dynamically create a fingered structure, either with bulk and source connected or not with the proper guard ring.&lt;br /&gt;
[[File:Fingered Transistor.png|none|thumb|300x300px|Example of a fingered transistor]]&lt;br /&gt;
Libre PDK may also decide to just generate a single gate transistor in cases where there&#039;s very little power involved&lt;br /&gt;
[[File:Single Gate Example.png|none|thumb|300x300px|Example of a single gate transistor]]&lt;br /&gt;
&lt;br /&gt;
== Pad Cells ==&lt;br /&gt;
Last but not least: It contains the [[Pad Cell Generator]] which produces beauties like this&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=644</id>
		<title>Pad Cell Generator</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=Pad_Cell_Generator&amp;diff=644"/>
		<updated>2026-05-26T02:33:13Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;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.&lt;br /&gt;
[[File:Preliminary First Pad Frame generated.png|thumb|First Version of a Padframe of IHP&#039;s SG13G2 generated by LibrePDK (Still needs some work)]]&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Existing Groundwork ==&lt;br /&gt;
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&lt;br /&gt;
&lt;br /&gt;
Here&#039;s some works our generator will be based on:&lt;br /&gt;
&lt;br /&gt;
* Gowthami Nalla did some work with the logic circuit and the driver but it&#039;s specific to XFAB only; https://github.com/gowthaminalla/bidirectional-buffer/&lt;br /&gt;
* Very rudimentary development has been done on the ESD front: https://github.com/AishikAnalogCKTdesign/ESD&lt;br /&gt;
* Philip&#039;s pad frame generator (Perl): https://www2.futureware.at/~philipp/vsd2018/&lt;br /&gt;
* Philip&#039;s very basic Perl based pad cell generator (https://pdk.libresilicon.com/PadCellGenerator.zip)&lt;br /&gt;
** Perl based&lt;br /&gt;
** Not portable&lt;br /&gt;
** Needs smarter ESD protection&lt;br /&gt;
** Needs smarter IO config&lt;br /&gt;
** Doesn&#039;t have termination resistor configuration (needed for DDR3/DDR4 PHYs)&lt;br /&gt;
** Not even yet half finished&lt;br /&gt;
&lt;br /&gt;
== Configuration ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== How to use ==&lt;br /&gt;
The Pad Cell Generator is part of [[LibrePDK]]&lt;br /&gt;
&lt;br /&gt;
Running the following script within the LibrePDK folder, after following the installation instructions...&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
TECH=SG13G2&lt;br /&gt;
VOLTAGE=1.2&lt;br /&gt;
mkdir -p ihp_pads&lt;br /&gt;
pushd ihp_pads&lt;br /&gt;
uv run librepdk_padcell_generator -t $TECH -v $VOLTAGE -i 20,30,40,60&lt;br /&gt;
popd&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;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)&lt;br /&gt;
[[File:Preliminary First Pad Frame generated.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
== Electrical Discharge Protection ==&lt;br /&gt;
Since we&#039;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.&lt;br /&gt;
&lt;br /&gt;
The whole math is being documented in [[Physics-Based Wire Sizing for I/O Pad Cells]]&lt;br /&gt;
&lt;br /&gt;
Subsequently the ngspice analysis and verification of the reverse solved hardware design can be found in [[ESD Verification]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=643</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=643"/>
		<updated>2026-05-26T02:27:35Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
As described [https://gitlab.libresilicon.com/generator-tools/librepdk/-/blob/master/docs/testing/padcells.md?ref_type=heads here] the test setup is really simple:&lt;br /&gt;
&lt;br /&gt;
The deck models a basic HBM discharge setup with:&lt;br /&gt;
&lt;br /&gt;
* a 100 pF capacitor&lt;br /&gt;
* a 1.5 kΩ series resistor&lt;br /&gt;
* a switched discharge path&lt;br /&gt;
* a bias on &amp;lt;code&amp;gt;NOT_EN&amp;lt;/code&amp;gt; so the driver remains disabled during the pulse&lt;br /&gt;
&lt;br /&gt;
This is just the driver stage test. The input buffer will be having additional tests&lt;br /&gt;
&lt;br /&gt;
== The IHP SG13G2 @ 1.2V case ==&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
=== HBM ESD Dissipation ===&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the micro Jules range&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing[[File:Hbm esd dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== ESD Waveforms ===&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.[[File:Hbm esd waveforms SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== HBM ESD Zoomed In ===&lt;br /&gt;
[[File:Hbm esd zoom SG13G2@1.2V.png|alt=Hbm esd zoom SG13G2@1.2V|none|thumb|Hbm esd zoom SG13G2@1.2V]]&lt;br /&gt;
&lt;br /&gt;
== The IHP SG13G2 @ 3.3V case ==&lt;br /&gt;
When you look at this thing here and its simulation result, it&#039;s no surprise that it has the same results as the 1.2V one, because they&#039;ve been dimensioned based on the same math.[[File:Io cell 20mA.png|none|thumb|IHP cell for 20mA @ 3.3V]]&lt;br /&gt;
&lt;br /&gt;
=== HBM ESD Dissipation ===&lt;br /&gt;
[[File:Hbm esd dissipation SG13G2@3.3V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== ESD Waveforms ===&lt;br /&gt;
[[File:Hbm esd waveforms SG13G2@3.3V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== HBM ESD Zoomed In ===&lt;br /&gt;
[[File:Hbm esd zoom SG13G2@3.3V.png|none|thumb]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
	<entry>
		<id>https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=642</id>
		<title>ESD Verification</title>
		<link rel="alternate" type="text/html" href="https://wiki.libresilicon.com/index.php?title=ESD_Verification&amp;diff=642"/>
		<updated>2026-05-26T02:05:26Z</updated>

		<summary type="html">&lt;p&gt;Leviathan: /* HBM ESD Dissipation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Below two examples from our automated test suite showcasing how our approach reverse solving the [[wikipedia:Human-body_model|HBM model]] math as elaborated in [[Physics-Based_Wire_Sizing_for_I/O_Pad_Cells]] actually leads to simulation results in ngspice which show that our ESD diodes we chose actually protect our internal circuitry.&lt;br /&gt;
&lt;br /&gt;
Oh wow. When you solve Ohm&#039;s law in one direction and then the other, you end up with the current you originally have defined at a certain voltage. Who would have thought this... anyway. Here some examples.&lt;br /&gt;
&lt;br /&gt;
After running&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./tests/test_all_padcells.sh visual&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;you end up with a folder called &amp;quot;generated_output&amp;quot;&lt;br /&gt;
&lt;br /&gt;
We&#039;re looking at &amp;quot;generated_output/SG13G2/padcell/1.2V&amp;quot; and &amp;quot;generated_output/SG13G2/padcell/3.3V&amp;quot; here as examples&lt;br /&gt;
&lt;br /&gt;
== The IHP SG13G2 @ 1.2V case ==&lt;br /&gt;
Comparing those two you will notice that the pad with the lower operational voltage needs more area.&lt;br /&gt;
&lt;br /&gt;
While at first counter intuitive, this is because we&#039;re not dealing with Ohm&#039;s law here but with solid state physics, such as hot carriers and the such.&lt;br /&gt;
&lt;br /&gt;
The thermal budget also plays a role but not as much as electron migration and so.&lt;br /&gt;
[[File:Io cell 20mA@1.2V.png|none|thumb|300x300px|IHP cell for 20mA @ 1.2V]]&lt;br /&gt;
&lt;br /&gt;
=== HBM ESD Dissipation ===&lt;br /&gt;
Assuming a typical ESD discharge of a few nanoseconds the energy absorbed by the chip itself is in the micro Jules range&lt;br /&gt;
&lt;br /&gt;
That&#039;s nothing[[File:Hbm esd dissipation SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== ESD Waveforms ===&lt;br /&gt;
The current flowing through the pad during an ESD event is only 2100 * 1e-10 at its peak.&lt;br /&gt;
&lt;br /&gt;
2100*0.1nA = 210nA = 0.2uA  ... high ohmic inputs when being turned off are doing high ohmic things.[[File:Hbm esd waveforms SG13G2@1.2V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== HBM ESD Zoomed In ===&lt;br /&gt;
[[File:Hbm esd zoom SG13G2@1.2V.png|alt=Hbm esd zoom SG13G2@1.2V|none|thumb|Hbm esd zoom SG13G2@1.2V]]&lt;br /&gt;
&lt;br /&gt;
== The IHP SG13G2 @ 3.3V case ==&lt;br /&gt;
When you look at this thing here and its simulation result, it&#039;s no surprise that it has the same results as the 1.2V one, because they&#039;ve been dimensioned based on the same math.[[File:Io cell 20mA.png|none|thumb|IHP cell for 20mA @ 3.3V]]&lt;br /&gt;
&lt;br /&gt;
=== HBM ESD Dissipation ===&lt;br /&gt;
[[File:Hbm esd dissipation SG13G2@3.3V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== ESD Waveforms ===&lt;br /&gt;
[[File:Hbm esd waveforms SG13G2@3.3V.png|none|thumb]]&lt;br /&gt;
&lt;br /&gt;
=== HBM ESD Zoomed In ===&lt;br /&gt;
[[File:Hbm esd zoom SG13G2@3.3V.png|none|thumb]]&lt;/div&gt;</summary>
		<author><name>Leviathan</name></author>
	</entry>
</feed>