Repository: dan-fritchman/Hdl21 (language: python)

Issue:
Expanded SKY130
This expands the SKY130 PDK to include all `fd_pr` primitives as described in #103.

A couple of changes to base HDL21 `primitives.py` are needed including:

- Add `model` parameter to `BipolarParams`
- Add `ShieldedCapacitor` primitive for Perp/Parr VPP primitives
- Add `W/L` to `PhysicalCapacitorParams` to account for generic/varactor variables

Have also expanded the repertoire of tests to include all new devices with compilation and netlisting.

Need to add more comprehensive simulation tests to build out `test_site.py` to ensure all components are working as expected, but I figured this would be a good first start.

`primitives.py` in `sky130` are me toying with the idea of introducing helper functions to make it even easier to create devices with `sky130` import
Don't Test Against Netlist String Literals
This comes up from time to time, notably in #44.  
We do something like: 

```python
some_hdl21_thing = h.Something()
h.netlist(some_hdl21_thing, dest)

# OK great! Now check we got "the expected" netlist: 
assert "thing \n" in dest
```

...And then, some time later, we get stuff like so: 

```
FAIL FAIL FAIL
assert "thing \n" in "thing  \n" # <= now there's two spaces there
```

i.e. 

* There are many degrees of freedom in netlist-text 
* VLSIR (tools) every so often makes a non-semantic change among them - i.e. adding or remove whitespace or line-breaks 
* (Notably in #44 - such changes were actually surprisingly _semantic-relevant_)

The tests should instead probably be: 

* Make sure the HDL21 stuff converts to VLSIR, i.e. survives `to_proto`
* Do all the checks _against the VLSIR stuff_
  * I.e. all those assertions should be like `assert isinstance(h.to_proto(thing), vlsir.Thing)`
* Still run netlisting
  * Just don't check the literal output
  * Maybe just check that, like, it's not empty? 


Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index 8359092..76c8cef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -68,7 +68,7 @@ MANIFEST
 pip-log.txt
 pip-delete-this-directory.txt
 
-# Unit test / coverage reports
+# Unit test / coverage / profiling reports
 htmlcov/
 .tox/
 .nox/
@@ -82,6 +82,7 @@ coverage.xml
 .hypothesis/
 .pytest_cache/
 cover/
+prof/
 
 # Translations
 *.mo
diff --git a/.vscode/settings.json b/.vscode/settings.json
index bfa6255..ac69660 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -6,4 +6,5 @@
     "python.testing.unittestEnabled": false,
     "python.testing.nosetestsEnabled": false,
     "python.testing.pytestEnabled": true,
+    "python.analysis.typeCheckingMode": "off",
 }
\ No newline at end of file
diff --git a/SampleSitePdks/sitepdks.py b/SampleSitePdks/sitepdks.py
index 2fc06ca..370274e 100644
--- a/SampleSitePdks/sitepdks.py
+++ b/SampleSitePdks/sitepdks.py
@@ -23,15 +23,18 @@
 """
 
 from pathlib import Path
+import os
 
 # Sky 130
 import sky130
 
 sky130.install = sky130.Install(
-    model_lib=Path("pdks") / "sky130" / ... / "sky130.lib.spice"
+    pdk_path=Path(os.environ["PDK_ROOT"] + "/" + os.environ["PDK"]),
+    lib_path=Path("libs.tech/ngspice/sky130.lib.spice"),
+    model_ref=Path("libs.ref/sky130_fd_pr/spice"),
 )
 
 # ASAP7
 import asap7
 
-asap7.install = asap7.Install(model_lib=Path("pdks") / "asap7" / ... / "7nm_TT.pm")
+# asap7.install = asap7.Install(model_lib=Path("pdks") / "asap7" / ... / "7nm_TT.pm")
diff --git a/hdl21/external_module.py b/hdl21/external_module.py
index 2b3869e..926b766 100644
--- a/hdl21/external_module.py
+++ b/hdl21/external_module.py
@@ -76,7 +76,8 @@ def __post_init_post_parse__(self):
 
     def __call__(self, arg: Any = Default, **kwargs) -> "ExternalModuleCall":
         """Call to set an `ExternalModule`'s parameters.
-        Returns an `ExternalModuleCall` combining the `ExternalModule` and parameter values."""
+        Returns an `ExternalModuleCall` combining the `ExternalModule` and parameter values.
+        """
         params = param_call(callee=self, arg=arg, **kwargs)
         return ExternalModuleCall(module=self, params=params)
 
@@ -93,7 +94,8 @@ def __hash__(self) -> bool:
 @dataclass
 class ExternalModuleCall:
     """# External Module Call
-    A combination of an `ExternalModule` and its Parameter-values, typically generated by calling the `ExternalModule`."""
+    A combination of an `ExternalModule` and its Parameter-values, typically generated by calling the `ExternalModule`.
+    """
 
     module: ExternalModule
     params: Any
diff --git a/pdks/Sky130/readme.md b/pdks/Sky130/readme.md
index 355b70c..24f5e87 100644
--- a/pdks/Sky130/readme.md
+++ b/pdks/Sky130/readme.md
@@ -23,21 +23,6 @@ Related Projects:
 `sky130` defines a set of `hdl21.ExternalModule`s comprising the essential devices of the SkyWater 130nm open-source PDK, '
 and an `compile` method for converting process-portable `hdl21.Primitive` elements into these modules. 
 
-The complete 130nm design kit includes hundreds of devices. 
-A subset are targets for conversion from generic Hdl21 `Primitives`. 
-They include: 
-
-* "Core" Mos transistors `sky130_fd_pr__{nfet,pfet}_01v8{,_lvt,_hvt}`
-
-And may in the near future also include: 
-
-* Resistors `sky130_fd_pr__res_*`
-* Capacitors `sky130_fd_pr__cap_*`
-* Bipolar Transistors `sky130_fd_pr__{npn,pnp}_*`
-* Diodes, which the PDK provides as SPICE `.model` statements alone, and will correspondingly need to be `hdl21.Module`s. 
-
-Remaining devices can be added directly to user-projects as `hdl21.ExternalModule`s, or can be added to this package via pull request.  
-
 
 ## Installation
 
@@ -54,7 +39,6 @@ import sky130
 assert sky130.modules.sky130_fd_pr__nfet_01v8 is not None # etc
 ```
 
-
 ## PDK `Install` Data
 
 Silicon process technologies generally require non-Python data to execute simulations and other tasks. Sky130 is no different. *Those files are not distributed as part of this package.* The `sky130` package defines an Hdl21 `PdkInstallation` type `sky130.Install`, which includes references to any such out-of-Python data, generally in the form of filesystem paths. See the [Hdl21 PDK docs](https://github.com/dan-fritchman/Hdl21#process-technologies) for more background. 
@@ -80,9 +64,135 @@ sky130.install = sky130.Install(model_lib=model_lib)
 
 Note the conda-based installation supports simulation solely with [ngspice](https://ngspice.sourceforge.io/). Sky130 models compatible with Sandia Labs' [Xyce](https://xyce.sandia.gov/) have been generated by the community, but are less straightforward to find, install, and revision control.
 
+## List of Available Devices
+
+It is important to emphasize that all PDK units are written in microns (μm). We recommend consulting the [SKY130 Device Detail Documentation](https://skywater-pdk.readthedocs.io/en/main/rules/device-details.html) which can provide additional information on these additional components.
+
+### MOSFETs
+
+MOSFETs can be defined using either width (W), length (L) and number of fingers (NF), the SKY130-HDL21 PDK module offers the following components, all with the junction terminals (d,g,s,b) with the exception of NMOS_ISO_20p0V
+
+| Component Key      | MosType | MosVth | MosFamily | Component Name                 | Description                     |
+|--------------------|---------|--------|-----------|--------------------------------|---------------------------------|
+| NMOS_1p8V_STD      | NMOS    | STD    | CORE      | sky130_fd_pr__nfet_01v8        | Standard 1.8V NMOS transistor   |
+| NMOS_1p8V_LOW      | NMOS    | LOW    | CORE      | sky130_fd_pr__nfet_01v8_lvt    | Low threshold 1.8V NMOS         |
+| PMOS_1p8V_STD      | PMOS    | STD    | CORE      | sky130_fd_pr__pfet_01v8        | Standard 1.8V PMOS transistor   |
+| PMOS_1p8V_HIGH     | PMOS    | HIGH   | CORE      | sky130_fd_pr__pfet_01v8_hvt    | High threshold 1.8V PMOS        |
+| PMOS_1p8V_LOW      | PMOS    | LOW    | CORE      | sky130_fd_pr__pfet_01v8_lvt    | Low threshold 1.8V PMOS         |
+| PMOS_5p5V_D10_STD  | PMOS    | STD    | IO        | sky130_fd_pr__pfet_g5v0d10v5    | Standard 5.5V PMOS with D10     |
+| NMOS_5p5V_D10_STD  | NMOS    | STD    | IO        | sky130_fd_pr__nfet_g5v0d10v5    | Standard 5.5V NMOS with D10     |
+| PMOS_5p5V_D16_STD  | PMOS    | STD    | IO        | sky130_fd_pr__pfet_g5v0d16v0    | Standard 5.5V PMOS with D16     |
+| NMOS_20p0V_STD     | NMOS    | STD    | NONE      | sky130_fd_pr__nfet_20v0        | Standard 20V NMOS transistor    |
+| NMOS_20p0V_LOW     | NMOS    | ZERO   | NONE      | sky130_fd_pr__nfet_20v0_zvt    | Zero threshold 20V NMOS         |
+| NMOS_ISO_20p0V     | NMOS    | STD    | NONE      | sky130_fd_pr__nfet_20v0_iso    | 5-Terminal Isolated 20V NMOS transistor with an extra terminal called "sub"   |
+| PMOS_20p0V         | PMOS    | STD    | NONE      | sky130_fd_pr__pfet_20v0        | Standard 20V PMOS transistor    |
+| NMOS_3p3V_NAT      | NMOS    | NATIVE | NONE      | sky130_fd_pr__nfet_03v3_nvt    | Native 3.3V NMOS transistor     |
+| NMOS_5p0V_NAT      | NMOS    | NATIVE | NONE      | sky130_fd_pr__nfet_05v0_nvt    | Native 5.0V NMOS transistor     |
+| NMOS_20p0V_NAT     | NMOS    | NATIVE | NONE      | sky130_fd_pr__nfet_20v0_nvt    | Native 20V NMOS transistor      |
+| ESD_NMOS_1p8V       | NMOS    | STD      | CORE   | sky130_fd_pr__esd_nfet_01v8         | Native ESD 1.8V NMOS, , standard Vth, core family |
+| ESD_NMOS_5p5V_D10   | NMOS    | STD      | IO     | sky130_fd_pr__esd_nfet_g5v0d10v5     | ESD NMOS, 5.5V, standard Vth, IO family, D10 variant |
+| ESD_NMOS_5p5V_NAT   | NMOS    | NATIVE   | IO     | sky130_fd_pr__esd_nfet_g5v0d10v5_nvt | ESD NMOS, 5.5V, native Vth, IO family, D10 variant |
+| ESD_PMOS_5p5V       | PMOS    | STD      | IO     | sky130_fd_pr__esd_pfet_g5v0d10v5     | ESD PMOS, 5.5V, standard Vth, IO family |
+### Generic Resistors
+
+Generic resistors can be defined using either width (W), length (L), 3-terminal resistors are substrate-based.
+
+| Component Key | Component Name               | Number of Terminals | Description                          |
+|---------------|-------------------------------|---------------------|--------------------------------------|
+| GEN_PO        | sky130_fd_pr__res_generic_po | 2 (p,n)                  | Generic 2-terminal poly resistor     |
+| GEN_L1        | sky130_fd_pr__res_generic_l1 | 2 (p,n)                  | Generic 2-terminal local-interconnect resistor  |
+| GEN_M1        | sky130_fd_pr__res_generic_m1 | 2 (p,n)                  | Generic 2-terminal metal-1 resistor  |
+| GEN_M2        | sky130_fd_pr__res_generic_m2 | 2 (p,n)                  | Generic 2-terminal metal-2 resistor  |
+| GEN_M3        | sky130_fd_pr__res_generic_m3 | 2 (p,n)                  | Generic 2-terminal metal-3 resistor  |
+| GEN_M4        | sky130_fd_pr__res_generic_m4 | 2 (p,n)                  | Generic 2-terminal metal-4 resistor  |
+| GEN_M5        | sky130_fd_pr__res_generic_m5 | 2 (p,n)                  | Generic 2-terminal metal-5 resistor  |
+| GEN_ND        | sky130_fd_pr__res_generic_nd | 3 (p,n,b)                  | Generic 3-terminal N-diff resistor   |
+| GEN_PD        | sky130_fd_pr__res_generic_pd | 3 (p,n,b)                  | Generic 3-terminal P-diff resistor   |
+| GEN_ISO_PW    | sky130_fd_pr__res_iso_pw     | 3 (p,n,b)                  | Generic 3-terminal isolated PW resistor |
+
+### Precision Resistors
+
+Precision resistors have a fixed width in the SKY130 PDK, and can be defined in HDL only using the "L" parameter. All devices have junction terminals (p,n,b).
+
+| Component Key | Component Name                    | Description                 |
+|---------------|------------------------------------|-----------------------------|
+| PP_PREC_0p35  | sky130_fd_pr__res_high_po_0p35    | Precision P+ 0.35μm resistor   |
+| PP_PREC_0p69  | sky130_fd_pr__res_high_po_0p69    | Precision P+ 0.69μm resistor   |
+| PP_PREC_1p41  | sky130_fd_pr__res_high_po_1p41    | Precision P+ 1.41μm resistor   |
+| PP_PREC_2p85  | sky130_fd_pr__res_high_po_2p85    | Precision P+ 2.85μm resistor   |
+| PP_PREC_5p73  | sky130_fd_pr__res_high_po_5p73    | Precision P+ 5.73μm resistor   |
+| PM_PREC_0p35  | sky130_fd_pr__res_xhigh_po_0p35   | Precision P- 0.35μm resistor |
+| PM_PREC_0p69  | sky130_fd_pr__res_xhigh_po_0p69   | Precision P- 0.69μm resistor |
+| PM_PREC_1p41  | sky130_fd_pr__res_xhigh_po_1p41   | Precision P- 1.41μm resistor |
+| PM_PREC_2p85  | sky130_fd_pr__res_xhigh_po_2p85   | Precision P- 2.85μm resistor |
+| PM_PREC_5p73  | sky130_fd_pr__res_xhigh_po_5p73   | Precision P- 5.73μm resistor |
+
+### Diodes
+
+Diodes in HDL21 are defined using width (W) and length (L) which are then converted into area and junction perimeter behind the scenes. All devices have junction terminals (p,n).
+
+| Component Key  | Component Name                             | Description                      |
+|----------------|--------------------------------------------|----------------------------------|
+| PWND_5p5V      | sky130_fd_pr__diode_pw2nd_05v5             | PW2ND diode, 5.5V                |
+| PWND_11p0V     | sky130_fd_pr__diode_pw2nd_11v0             | PW2ND diode, 11.0V               |
+| PWND_5p5V_NAT  | sky130_fd_pr__diode_pw2nd_05v5_nvt         | PW2ND diode, 5.5V, native VT     |
+| PWND_5p5V_LVT  | sky130_fd_pr__diode_pw2nd_05v5_lvt         | PW2ND diode, 5.5V, low VT        |
+| PDNW_5p5V      | sky130_fd_pr__diode_pd2nw_05v5             | PD2NW diode, 5.5V                |
+| PDNW_11p0V     | sky130_fd_pr__diode_pd2nw_11v0             | PD2NW diode, 11.0V               |
+| PDNW_5p5V_HVT  | sky130_fd_pr__diode_pd2nw_05v5_hvt         | PD2NW diode, 5.5V, high VT       |
+| PDNW_5p5V_LVT  | sky130_fd_pr__diode_pd2nw_05v5_lvt         | PD2NW diode, 5.5V, low VT        |
+| PX_RF_PSNW     | sky130_fd_pr__model__parasitic__rf_diode_ps2nw | RF parasitic PS2NW diode      |
+| PX_RF_PWDN     | sky130_fd_pr__model__parasitic__rf_diode_pw2dn | RF parasitic PW2DN diode      |
+| PX_PWDN        | sky130_fd_pr__model__parasitic__diode_pw2dn    | Parasitic PW2DN diode          |
+| PX_PSDN        | sky130_fd_pr__model__parasitic__diode_ps2dn    | Parasitic PS2DN diode          |
+| PX_PSNW        | sky130_fd_pr__model__parasitic__diode_ps2nw    | Parasitic PS2NW diode          |
+
+### Bipolar Junction Transistors
+
+Bipolar Junction Transistors in the SKY130 PDK are defined as static devices and do not yet have parametric cells. As such, no parameters can be passed apart from "m" for parallel multiplicity of components:
+
+| Component Key      | Component Name                     | Number of Terminals | Description                     |
+|--------------------|------------------------------------|---------------------|---------------------------------|
+| NPN_5p0V_1x2       | sky130_fd_pr__npn_05v5_W1p00L2p00  | 4 (c,b,e,s)                   | NPN BJT, 5.0V, 1x2μm       |
+| NPN_11p0V_1x1      | sky130_fd_pr__npn_11v0_W1p00L1p00  | 4 (c,b,e,s)                  | NPN BJT, 11.0V, 1x1μm      |
+| NPN_5p0V_1x1       | sky130_fd_pr__npn_05v5_W1p00L1p00  | 4 (c,b,e,s)                  | NPN BJT, 5.0V, 1x1μm       |
+| PNP_5p0V_0p68x0p68 | sky130_fd_pr__pnp_05v5_W0p68L0p68 | 3 (c,b,e)                  | PNP BJT, 5.0V, 0.68x0.68μm       |
+| PNP_5p0V_3p40x3p40 | sky130_fd_pr__pnp_05v5_W3p40L3p40 | 3 (c,b,e)                  | PNP BJT, 5.0V, 3.4x3.4μm       |
+
+### Capacitors
+
+Capacitors in SKY130 come in 4 flavours, the MiM capacitor, the Varactor, the Vertical Parallel Plate transistor and the Vertical Perpendicular Plate capacitor, the latter two accept no arguments and their dimensions are fixed, whereas the first two allow their width and length to be defined:
+
+| Component Key  | Component Name                           | Number of Terminals | Capacitor Type | Description                             |
+|----------------|------------------------------------------|---------------------|---------------|-----------------------------------------|
+| MIM_M3         | sky130_fd_pr__cap_mim_m3_1               | 2 (p,n)                  | MiM           | MiM capacitor, M3 layer                 |
+| MIM_M4         | sky130_fd_pr__cap_mim_m3_2               | 2 (p,n)                  | MiM           | MiM capacitor, M4 layer                 |
+| VAR_LVT        | sky130_fd_pr__cap_var_lvt                | 3 (p,n,b)                   | Varactor      | Varactor, LVT variant                   |
+| VAR_HVT        | sky130_fd_pr__cap_var_hvt                | 3 (p,n,b)                   | Varactor      | Varactor, HVT variant                   |
+| VPP_PARA_1     | sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2 | 3         | VPP (Parallel)| VPP parallel capacitor, 4.4x4.6 µm, M1M2 |
+| VPP_PARA_2     | sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield          | 3 (p,n,b)                   | VPP (Parallel)     | VPP parallel capacitor, 2.4x4.6 µm, M1M2                  |
+| VPP_PARA_3     | sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield          | 3 (p,n,b)                   | VPP (Parallel)     | VPP parallel capacitor, 8.6x7.8 µm, M1M2                  |
+| VPP_PARA_4     | sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield          | 3 (p,n,b)                   | VPP (Parallel)     | VPP parallel capacitor, 4.4x4.6 µm, M1M2                  |
+| VPP_PARA_5     | sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield          | 3 (p,n,b)                   | VPP (Parallel)     | VPP parallel capacitor, 11.5x11.7 µm, M1M2                |
+| VPP_PARA_6     | sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield | 3 (p,n,b)                   | VPP (Parallel)     | VPP parallel capacitor, 44.7x23.1 µm, POL1M1M2M3M4M5       |
+| VPP_PARA_7     | sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap | 3 (p,n,b)               | VPP (Parallel)     | VPP parallel capacitor, 2.7x6.1 µm, M1M2M3M4, shield L1, finger cap |
+| VPP_PARA_8     | sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2 | 3 (p,n,b)             | VPP (Parallel)     | VPP parallel capacitor, 2.9x6.1 µm, M1M2M3M4, shield L1, finger cap 2 |
+| VPP_PARA_9     | sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap | 3 (p,n,b)             | VPP (Parallel)     | VPP parallel capacitor, 2.7x11.1 µm, M1M2M3M4, shield L1, finger cap |
+| VPP_PARA_10    | sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap | 3 (p,n,b)             | VPP (Parallel)     | VPP parallel capacitor, 2.7x21.1 µm, M1M2M3M4, shield L1, finger cap |
+| VPP_PARA_11    | sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap | 3 (p,n,b)            | VPP (Parallel)     | VPP parallel capacitor, 2.7x41.1 µm, M1M2M3M4, shield L1, finger cap |
+| VPP_PERP_1     | sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5    | 4 (p,n,t,b)                   | VPP (Perpendicular)| VPP perpendicular capacitor, 11.5x11.7 µm, L1M1M2M3M4, shield M5 |
+| VPP_PERP_2     | sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5  | 4 (p,n,t,b)                   | VPP (Perpendicular)| VPP perpendicular capacitor, 11.5x11.7 µm, L1M1M2M3M4, shield PoM5 |
+| VPP_PERP_3     | sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5    | 4 (p,n,t,b)                   | VPP (Perpendicular)| VPP perpendicular capacitor, 11.5x11.7 µm, M1M2M3M4, shield L1M5 |
+| VPP_PERP_4     | sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4 | 4 (p,n,t,b)               | VPP (Perpendicular)| VPP perpendicular capacitor, 4.4x4.6 µm, M1M2M3, shield L1M5, floating M4 |
+| VPP_PERP_5     | sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4 | 4 (p,n,t,b)               | VPP (Perpendicular)| VPP perpendicular capacitor, 8.6x7.8 µm, M1M2M3, shield L1M5, floating M4 |
+| VPP_PERP_6     | sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4 | 4 (p,n,t,b)               | VPP (Perpendicular)| VPP perpendicular capacitor, 11.5x11.7 µm, M1M2M3, shield L1M5, floating M4 |
+| VPP_PERP_7     | sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4      | 4 (p,n,t,b)                   | VPP (Perpendicular)| VPP perpendicular capacitor, 11.5x11.7 µm, L1M1M2M3, shield M4 |
+| VPP_PERP_8     | sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4    | 4 (p,n,t,b)                   | VPP (Perpendicular)| VPP perpendicular capacitor, 6.8x6.1 µm, L1M1M2M3, shield PoM4 |
+| VPP_PERP_9     | sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4      | 4 (p,n,t,b)                   | VPP (Perpendicular)| VPP perpendicular capacitor, 6.8x6.1 µm, M1M2M3, shield L1M4 |
+| VPP_PERP_10    | sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop | 4 (p,n,t,b)             | VPP (Perpendicular)| VPP perpendicular capacitor, 11.3x11.8 µm, L1M1M2M3M4, shield M5, NHV top |
 
 ## Development 
 
 ```
 pip install -e ".[dev]"
-```
+```
\ No newline at end of file
diff --git a/pdks/Sky130/sky130/__init__.py b/pdks/Sky130/sky130/__init__.py
index f083558..6661eee 100644
--- a/pdks/Sky130/sky130/__init__.py
+++ b/pdks/Sky130/sky130/__init__.py
@@ -2,12 +2,12 @@
 from hdl21.pdk import register
 
 # Grab our primary PDK-definition module
-from . import pdk
-from .pdk import *
+from . import pdk_logic
+from .pdk_logic import *
 
 # The optional external-data installation.
 # Set by an instantiator of `Install`, if available.
 install: Optional[Install] = None
 
 # And register as a PDK module
-register(pdk)
+register(pdk_logic)
diff --git a/pdks/Sky130/sky130/pdk.py b/pdks/Sky130/sky130/pdk.py
deleted file mode 100644
index c331d9a..0000000
--- a/pdks/Sky130/sky130/pdk.py
+++ /dev/null
@@ -1,208 +0,0 @@
-""" 
-
-# Hdl21 + SkyWater 130nm Open-Source PDK Modules and Transformations 
-
-Defines a set of `hdl21.ExternalModule`s comprising the essential devices of the SkyWater 130nm open-source PDK, '
-and an `hdl21pdk.netlist` method for converting process-portable `hdl21.Primitive` elements into these modules. 
-
-The complete 130nm design kit includes hundreds of devices. A small subset are targets for conversion from `hdl21.Primitive`. 
-They include: 
-
-* "Core" Mos transistors `sky130_fd_pr__{nfet,pfet}_01v8{,_lvt,_hvt}
-
-And may in the near future also include: 
-
-* Resistors `sky130_fd_pr__res_*`
-* Capacitors `sky130_fd_pr__cap_*`
-* Bipolar Transistors `sky130_fd_pr__{npn,pnp}_*`
-* Diodes, which the PDK provides as SPICE `.model` statements alone, and will correspondingly need to be `hdl21.Module`s. 
-
-Many of the latter include a variety of "de-parameterization" steps not yet tested by this package's authors.  
-
-Remaining devices can be added to user-projects as `hdl21.ExternalModule`s, 
-or added to this package via pull request.  
-
-"""
-
-# Std-Lib Imports
-from copy import deepcopy
-from pathlib import Path
-from dataclasses import field
-from typing import Dict, Tuple, Optional, List
-from types import SimpleNamespace
-
-# PyPi Imports
-from pydantic.dataclasses import dataclass
-
-# Hdl21 Imports
-import hdl21 as h
-from hdl21.prefix import MEGA, MILLI
-from hdl21.pdk import PdkInstallation
-
-PDK_NAME = "sky130"
-FIXME = None  # FIXME: Replace with real values!
-
-# Collected `ExternalModule`s are stored in the `modules` namespace
-modules = SimpleNamespace()
-
-
-@dataclass
-class Install(PdkInstallation):
-    """Pdk Installation Data
-    External data provided by site-specific installations"""
-
-    model_lib: Path  # Path to the transistor models included in this module
-
-    def include(self, corner: h.pdk.Corner) -> h.sim.Lib:
-        """# Get the model include file for process corner `corner`."""
-
-        mos_corners: Dict[h.pdk.Corner, str] = {
-            h.pdk.Corner.TYP: "tt",
-            h.pdk.Corner.FAST: FIXME,
-            h.pdk.Corner.SLOW: FIXME,
-        }
-        if not isinstance(corner, h.pdk.Corner) or corner not in mos_corners:
-            raise ValueError(f"Invalid corner {corner}")
-
-        return h.sim.Lib(path=self.model_lib, section=mos_corners[corner])
-
-
-@h.paramclass
-class MosParams:
-    """# Sky130 Mos Parameters"""
-
-    w = h.Param(dtype=h.Scalar, desc="Width in PDK Units (µm)", default=650 * MILLI)
-    l = h.Param(dtype=h.Scalar, desc="Length in PDK Units (µm)", default=150 * MILLI)
-    nf = h.Param(dtype=h.Scalar, desc="Number of Fingers", default=1)
-    mult = h.Param(dtype=h.Scalar, desc="Multiplier", default=1)
-
-
-# FIXME: keep this alias as prior versions may have used it
-Sky130MosParams = MosParams
-
-
-# # Transistors
-#
-# Mapping from `h.MosType` and `MosVth`s to module-names.
-#
-MosKey = Tuple[h.MosType, h.MosVth]
-xtors: Dict[MosKey, h.ExternalModule] = dict()
-
-
-def _xtor_module(modname: str, key: Optional[MosKey] = None) -> h.ExternalModule:
-    """Transistor module creator, with module-name `name`.
-    If optional `MosKey` `key` is provided, adds an entry in the `xtors` dictionary."""
-
-    mod = h.ExternalModule(
-        domain=PDK_NAME,
-        name=modname,
-        desc=f"{PDK_NAME} PDK Mos {modname}",
-        port_list=deepcopy(h.Mos.port_list),
-        paramtype=MosParams,
-    )
-
-    # If given a lookup key, add it to the `xtors` dictionary
-    if key is not None:
-        if key in xtors:
-            msg = f"Internal error: Mos Key {key} has already been defined"
-            raise RuntimeError(msg)
-        xtors[key] = mod
-
-    # Either way, add it to the `modules` namespace
-    setattr(modules, modname, mod)
-
-    return mod
-
-
-# Add all the transistor entries
-_xtor_module("sky130_fd_pr__nfet_01v8", (h.MosType.NMOS, h.MosVth.STD))
-_xtor_module("sky130_fd_pr__nfet_01v8_lvt", (h.MosType.NMOS, h.MosVth.LOW))
-_xtor_module("sky130_fd_pr__pfet_01v8", (h.MosType.PMOS, h.MosVth.STD))
-_xtor_module("sky130_fd_pr__pfet_01v8_hvt", (h.MosType.PMOS, h.MosVth.HIGH))
-_xtor_module("sky130_fd_pr__pfet_01v8_lvt", (h.MosType.PMOS, h.MosVth.LOW))
-# Note there are no NMOS HVT!
-# PMOS LVT was added at some point in history,
-# and added to this package in v3.0.
-
-
-@dataclass
-class Cache:
-    """# Module-Scope Cache(s)"""
-
-    mos_modcalls: Dict[h.primitives.Mos.Params, h.ExternalModuleCall] = field(
-        default_factory=dict
-    )
-    res_modcalls: Dict[
-        h.primitives.PhysicalResistor.Params, h.ExternalModuleCall
-    ] = field(default_factory=dict)
-
-
-CACHE = Cache()
-
-
-class Sky130Walker(h.HierarchyWalker):
-    """Hierarchical Walker, converting `h.Primitive` instances to process-defined `ExternalModule`s."""
-
-    def visit_primitive_call(self, call: h.PrimitiveCall) -> h.Instantiable:
-        """Replace instances of `h.primitive.Mos` with our `ExternalModule`s"""
-        # Replace transistors
-        if call.prim is h.primitives.Mos:
-            return self.mos_module_call(call.params)
-        # Return everything else as-is
-        return call
-
-    def mos_module_call(self, params: h.primitives.MosParams) -> h.ExternalModuleCall:
-        """Retrieve or create a `Call` for MOS parameters `params`."""
-        # First check our cache
-        if params in CACHE.mos_modcalls:
-            return CACHE.mos_modcalls[params]
-
-        # Not found; create a new `ExternalModuleCall`.
-        # First retrieve the `ExternalModule`.
-        mod = self.mos_module(params)
-
-        # Convert to `mod`s parameter-space
-        # Note this silly PDK keeps parameter-values in *microns* rather than SI meters.
-        w = self.scale_param(
-            params.w, 420 * MILLI
-        )  # FIXME: depend on the defaults directly
-        l = self.scale_param(params.l, 150 * MILLI)
-
-        modparams = Sky130MosParams(
-            w=w,
-            l=l,
-            nf=params.npar,  # FIXME: renaming
-            mult=params.mult,
-        )
-
-        # Combine the two into a call, cache and return it
-        modcall = mod(modparams)
-        CACHE.mos_modcalls[params] = modcall
-        return modcall
-
-    def mos_module(self, params: h.primitives.MosParams) -> h.ExternalModule:
-        """Retrieve or create an `ExternalModule` for a MOS of parameters `params`."""
-        mod = xtors.get((params.tp, params.vth), None)
-        if mod is None:
-            msg = f"No Mos module for model combination {(params.tp, params.vth)}"
-            raise RuntimeError(msg)
-        return mod
-
-    def scale_param(self, orig: Optional[h.Scalar], default: h.Prefixed) -> h.Scalar:
-        """Replace device size parameter-value `orig`.
-        Primarily type-dispatches across the need to scale to microns for this PDK."""
-        if orig is None:
-            return default
-        if not isinstance(orig, h.Scalar):
-            raise TypeError(f"Invalid Scalar parameter {orig}")
-        inner = orig.inner
-        if isinstance(inner, h.Prefixed):
-            return h.Scalar(inner=inner * MEGA)
-        if isinstance(inner, h.Literal):
-            return h.Scalar(inner=h.Literal(f"({inner} * 1e6)"))
-        raise TypeError(f"Param Value {inner}")
-
-
-def compile(src: h.Elaboratables) -> None:
-    """Compile `src` to the Sample technology"""
-    Sky130Walker().walk(src)
diff --git a/pdks/Sky130/sky130/pdk_data.py b/pdks/Sky130/sky130/pdk_data.py
new file mode 100644
index 0000000..97b800d
--- /dev/null
+++ b/pdks/Sky130/sky130/pdk_data.py
@@ -0,0 +1,14544 @@
+# Std-Lib Imports
+from copy import deepcopy
+from dataclasses import field
+from typing import Dict, Tuple, List
+from types import SimpleNamespace
+
+# PyPi Imports
+from pydantic.dataclasses import dataclass
+
+# Hdl21 Imports
+import hdl21 as h
+from hdl21.prefix import (
+    MILLI,
+    µ,
+    MEGA,
+    TERA,
+)
+from hdl21.primitives import (
+    MosType,
+    MosVth,
+    MosFamily,
+    PhysicalResistor,
+    PhysicalCapacitor,
+    Diode,
+    Bipolar,
+    ThreeTerminalResistor,
+    ThreeTerminalCapacitor,
+    MosParams,
+    PhysicalResistorParams,
+    PhysicalCapacitorParams,
+    DiodeParams,
+    BipolarParams,
+)
+
+# Vlsirtool Types to ease downstream parsing
+from vlsirtools import SpiceType
+
+FIXME = None  # FIXME: Replace with real values!
+PDK_NAME = "sky130"
+
+"""
+The following section contains all the necessary @paramclasses required to describe
+parameters of devices in the Sky130 Open PDK. It contains params:
+
+- MosParams (aka. Sky130MosParams) - standard MOS device parameters
+- Sky130Mos20VParams - special parameters for 20V MOS devices
+- Sky130GenResParams - parameters for generic resistors
+- Sky130PrecResParams - parameters for Sky130's precision resistors
+- Sky130MimParams - parameters for  Metal-insulator-Metal (MiM) capacitors
+- Sky130VarParams - paramaters foVPWRr variable capacitors (ie. varactors)
+- Sky130VPPParams - parameters for both Vertical Perpendicular Plate (VPP) and Vertical Parallel Plate (VPP) capacitors
+- Sky130DiodeParams - parameters for diodes
+- Sky130BipolarParams - parameters for bipolar devices
+"""
+
+
+@h.paramclass
+class MosParams:
+    """
+    A parameter class representing the MOSFET parameters for the Sky130 technology.
+    These parameters include various geometrical and electrical props of the MOSFET device,
+    such as width, length, number of fingers, drain and source areas, drain and source perimeters,
+    resistive values, spacings, and multipliers.
+
+    Attributes:
+    w (h.Scalar): Width of the MOSFET in PDK Units (µm). Default is 650 * MILLI.
+    l (h.Scalar): Length of the MOSFET in PDK Units (µm). Default is 150 * MILLI.
+    nf (h.Scalar): Number of fingers in the MOSFET. Default is 1.
+    m (h.Scalar): Multiplier for the MOSFET (alias for mult). Default is 1.
+
+    #! CAUTION: The following parameters are not recommended for design use.
+
+    ad (h.Literal): Drain area of the MOSFET. Default is 'int((nf+1)/2) * w/nf * 0.29'.
+    As (h.Literal): Source area of the MOSFET. Default is 'int((nf+2)/2) * w/nf * 0.29'.
+    pd (h.Literal): Drain perimeter of the MOSFET. Default is '2int((nf+1)/2) * (w/nf + 0.29)'.
+    ps (h.Literal): Source perimeter of the MOSFET. Default is '2int((nf+2)/2) * (w/nf + 0.29)'.
+    nrd (h.Literal): Drain resistive value of the MOSFET. Default is '0.29 / w'.
+    nrs (h.Literal): Source resistive value of the MOSFET. Default is '0.29 / w'.
+    sa (h.Scalar): Spacing between adjacent gate to drain. Default is 0.
+    sb (h.Scalar): Spacing between adjacent gate to source. Default is 0.
+    sd (h.Scalar): Spacing between adjacent drain to source. Default is 0.
+    mult (h.Scalar): Multiplier for the MOSFET. Default is 1.
+    """
+
+    w = h.Param(dtype=h.Scalar, desc="Width in PDK Units (µm)", default=650 * MILLI)
+    l = h.Param(dtype=h.Scalar, desc="Length in PDK Units (µm)", default=150 * MILLI)
+    nf = h.Param(dtype=h.Scalar, desc="Number of Fingers", default=1)
+    ad = h.Param(
+        dtype=h.Literal,
+        desc="Drain Area",
+        default=h.Literal("int((nf+1)/2) * w/nf * 0.29"),
+    )
+
+    # This unfortunate naming is to prevent conflicts with base python.
+    As = h.Param(
+        dtype=h.Literal,
+        desc="Source Area",
+        default=h.Literal("int((nf+2)/2) * w/nf * 0.29"),
+    )
+
+    pd = h.Param(
+        dtype=h.Literal,
+        desc="Drain Perimeter",
+        default=h.Literal("2*int((nf+1)/2) * (w/nf + 0.29)"),
+    )
+    ps = h.Param(
+        dtype=h.Literal,
+        desc="Source Perimeter",
+        default=h.Literal("2*int((nf+2)/2) * (w/nf + 0.29)"),
+    )
+    nrd = h.Param(
+        dtype=h.Literal, desc="Drain Resistive Value", default=h.Literal("0.29 / w")
+    )
+    nrs = h.Param(
+        dtype=h.Literal, desc="Source Resistive Value", default=h.Literal("0.29 / w")
+    )
+    sa = h.Param(
+        dtype=h.Scalar,
+        desc="Spacing between Adjacent Gate to Drain",
+        default=h.Literal(0),
+    )
+    sb = h.Param(
+        dtype=h.Scalar,
+        desc="Spacing between Adjacent Gate to Source",
+        default=h.Literal(0),
+    )
+    sd = h.Param(
+        dtype=h.Scalar,
+        desc="Spacing between Adjacent Drain to Source",
+        default=h.Literal(0),
+    )
+    mult = h.Param(dtype=h.Scalar, desc="Multiplier", default=1)
+    m = h.Param(dtype=h.Scalar, desc="Multiplier", default=1)
+
+
+# FIXME: keep this alias as prior versions may have used it
+Sky130MosParams = MosParams
+
+
+@h.paramclass
+class Sky130Mos20VParams:
+    """
+    A parameter class representing the MOSFET parameters for the Sky130 technology with a 20V rating.
+    These parameters include the width, length, and multiplier of the MOSFET device.
+
+    Attributes:
+    w (h.Scalar): Width of the MOSFET in PDK Units (µm). Default is 30.
+    l (h.Scalar): Length of the MOSFET in PDK Units (µm). Default is 1.
+    m (h.Scalar): Multiplier for the MOSFET. Default is 1.
+    """
+
+    w = h.Param(dtype=h.Scalar, desc="Width in PDK Units (µm)", default=30)
+    l = h.Param(dtype=h.Scalar, desc="Length in PDK Units (µm)", default=1)
+    m = h.Param(dtype=h.Scalar, desc="Multiplier", default=1)
+
+
+@h.paramclass
+class Sky130GenResParams:
+    """
+    A parameter class representing the generic resistor parameters for the Sky130 technology. These parameters include the width, length, and multiplicity of the resistor device.
+
+    Attributes:
+    w (h.Scalar): Width of the resistor in PDK Units (µm). Default is 1000 * MILLI.
+    l (h.Scalar): Length of the resistor in PDK Units (µm). Default is 1000 * MILLI.
+    m (h.Scalar): Multiplicity of the resistor. Default is 1.
+    """
+
+    w = h.Param(dtype=h.Scalar, desc="Width in PDK Units (µm)", default=1000 * MILLI)
+    l = h.Param(dtype=h.Scalar, desc="Length in PDK Units (µm)", default=1000 * MILLI)
+    m = h.Param(dtype=h.Scalar, desc="Multiplicity", default=1)
+
+
+@h.paramclass
+class Sky130PrecResParams:
+    """
+    A parameter class representing the precision resistor parameters for the Sky130 technology.
+    These parameters include the length and multiplicity of the precision resistor device.
+
+    Attributes:
+    l (h.Scalar): Length of the precision resistor in PDK Units (µm). Default is 1000 * MILLI.
+    mult (h.Scalar): Multiplicity of the precision resistor. Default is 1.
+    m (h.Scalar): Multiplicity of the precision resistor (alias for mult). Default is 1.
+    """
+
+    l = h.Param(dtype=h.Scalar, desc="Length in PDK Units (µm)", default=1000 * MILLI)
+    mult = h.Param(dtype=h.Scalar, desc="Multiplicity", default=1)
+    m = h.Param(dtype=h.Scalar, desc="Multiplicity", default=1)
+
+
+@h.paramclass
+class Sky130MimParams:
+    """
+    A parameter class representing the MiM (Metal-insulator-Metal) capacitor parameters for the Sky130 technology.
+    These parameters include the width, length, and multiplier of the MiM capacitor device.
+
+    Attributes:
+    w (h.Scalar): Width of the MiM capacitor in PDK Units (µm). Default is 1000 * MILLI.
+    l (h.Scalar): Length of the MiM capacitor in PDK Units (µm). Default is 1000 * MILLI.
+    mf (h.Scalar): Multiplier for the MiM capacitor. Default is 1.
+    """
+
+    w = h.Param(dtype=h.Scalar, desc="Width in PDK Units (µm)", default=1000 * MILLI)
+    l = h.Param(dtype=h.Scalar, desc="Length in PDK Units (µm)", default=1000 * MILLI)
+    mf = h.Param(dtype=h.Scalar, desc="Multiplier", default=1)
+
+
+@h.paramclass
+class Sky130VarParams:
+    """
+    A parameter class representing the varactor parameters for the Sky130 technology.
+    These parameters include the width, length, and multiplier of the varactor device.
+
+    Attributes:
+    w (h.Scalar): Width of the varactor in PDK Units (µm). Default is 1000 * MILLI.
+    l (h.Scalar): Length of the varactor in PDK Units (µm). Default is 1000 * MILLI.
+    vm (h.Scalar): Multiplier for the varactor. Default is 1.
+    """
+
+    w = h.Param(dtype=h.Scalar, desc="Width in PDK Units (µm)", default=1000 * MILLI)
+    l = h.Param(dtype=h.Scalar, desc="Length in PDK Units (µm)", default=1000 * MILLI)
+    vm = h.Param(dtype=h.Scalar, desc="Multiplier", default=1)
+
+
+# FIXME: These params will not autoscale arguments, it doesn't really matter that they don't
+# defaults are all that is really valid, but it'd be nice if an error could be thrown with
+# parameters being provided or some kind of scaling in the class.
+@h.paramclass
+class Sky130VPPParams:
+    """
+    A parameter class representing the Vertical Parallel/Perpendicular Plate (VPP) capacitor parameters for the Sky130 technology.
+    These parameters include the width, length, and multiplier of the VPP capacitor device.
+
+    Attributes:
+    w (h.Scalar): Width of the VPP capacitor in PDK Units (µm). Default is 1000 * MILLI.
+    l (h.Scalar): Length of the VPP capacitor in PDK Units (µm). Default is 1000 * MILLI.
+    mult (h.Scalar): Multiplier for the VPP capacitor. Default is 1.
+    m (h.Scalar): Multiplier for the VPP capacitor (alias for mult). Default is 1.
+    """
+
+    w = h.Param(dtype=h.Scalar, desc="Width in PDK Units (µm)", default=1000 * MILLI)
+    l = h.Param(dtype=h.Scalar, desc="Length in PDK Units (µm)", default=1000 * MILLI)
+    mult = h.Param(dtype=h.Scalar, desc="Multiplier", default=1)
+    m = h.Param(dtype=h.Scalar, desc="Multiplier", default=1)
+
+
+@h.paramclass
+class Sky130DiodeParams:
+    """
+    A parameter class representing the diode parameters for the Sky130 technology.
+    These parameters include the area and periphery junction capacitance of the diode device.
+
+    Attributes:
+    a (h.Scalar): Area of the diode in PDK Units (pm²). Default is 1 * TERA.
+    pj (h.Scalar): Periphery junction capacitance of the diode in attofarads (aF). Default is 4 * MEGA.
+    """
+
+    area = h.Param(
+        dtype=h.Scalar, desc="Area in PDK Units for Diodes (pm²)", default=1 * TERA
+    )
+    pj = h.Param(
+        dtype=h.Scalar,
+        desc="Periphery junction capacitance in aF (?)",
+        default=4 * MEGA,
+    )
+
+
+@h.paramclass
+class Sky130BipolarParams:
+    """
+    A parameter class representing the default bipolar transistor parameters for the Sky130 technology. These parameters include the multiplier for the bipolar transistor device.
+
+    Attributes:
+    m (h.Scalar): Multiplier for the bipolar transistor. Default is 1.
+    """
+
+    m = h.Param(dtype=h.Scalar, desc="Multiplier", default=1)
+
+
+@h.paramclass
+class Sky130LogicParams:
+    """
+    A parameter class representing the default attributes of a logic gate cell
+
+    Attributes:
+    m (h.Scalar): Multiplier for logic circuits. Default is 1.
+    """
+
+    m = h.Param(dtype=h.Scalar, desc="Multiplier", default=1)
+
+
+"""
+This subsection of code defines a set of module creator functions for various electronic components in the Sky130 technology.
+Each function is designed to create instances of external modules with the appropriate props and parameter types
+for the specified component.
+
+#! An important note is that `ExternalModule` props is used here to specify the spice prefix for the component used in
+#! in different simulators. The introduction of props into the `ExternalModule` class is more generic than this, but this
+#! is how we are using it for now. Future work will likely expand on this to make it more general.
+"""
+
+Mos5TPortList = [
+    h.Port(name="g", desc="Gate"),
+    h.Port(name="d", desc="Drain"),
+    h.Port(name="s", desc="Source"),
+    h.Port(name="b", desc="Bulk"),
+    h.Port(name="sub", desc="Substrate"),
+]
+
+
+def _xtor_module(
+    modname: str,
+    params: h.Param = Sky130MosParams,
+    num_terminals: int = 4,
+) -> h.ExternalModule:
+
+    """Transistor module creator, with module-name `name`.
+    If `MoKey` `key` is provided, adds an entry in the `xtors` dictionary."""
+
+    num2device = {4: h.Mos.port_list, 5: Mos5TPortList}
+
+    mod = h.ExternalModule(
+        domain=PDK_NAME,
+        name=modname,
+        desc=f"{PDK_NAME} PDK Mos {modname}",
+        port_list=deepcopy(num2device[num_terminals]),
+        paramtype=params,
+        spicetype=SpiceType.SUBCKT,
+    )
+
+    return mod
+
+
+def _res_module(
+    modname: str,
+    numterminals: int,
+    params: h.Param,
+    spicetype=SpiceType.SUBCKT,
+) -> h.ExternalModule:
+
+    """Resistor Module creator"""
+
+    num2device = {2: PhysicalResistor, 3: ThreeTerminalResistor}
+
+    mod = h.ExternalModule(
+        domain=PDK_NAME,
+        name=modname,
+        desc=f"{PDK_NAME} PDK Res{numterminals} {modname}",
+        port_list=deepcopy(num2device[numterminals].port_list),
+        paramtype=params,
+        spicetype=spicetype,
+    )
+
+    return mod
+
+
+def _diode_module(
+    modname: str,
+) -> h.ExternalModule:
+
+    """Diode Module creator"""
+
+    mod = h.ExternalModule(
+        domain=PDK_NAME,
+        name=modname,
+        desc=f"{PDK_NAME} PDK Diode {modname}",
+        port_list=deepcopy(Diode.port_list),
+        paramtype=Sky130DiodeParams,
+        spicetype=SpiceType.DIODE,
+    )
+
+    return mod
+
+
+BJT4TPortList = [
+    h.Port(name="c", desc="Collector"),
+    h.Port(name="b", desc="Base"),
+    h.Port(name="e", desc="Emitter"),
+    h.Port(name="s", desc="Substrate"),
+]
+
+
+def _bjt_module(
+    modname: str,
+    numterminals: int = 3,
+) -> h.ExternalModule:
+
+    num2device = {3: Bipolar.port_list, 4: BJT4TPortList}
+
+    mod = h.ExternalModule(
+        domain=PDK_NAME,
+        name=modname,
+        desc=f"{PDK_NAME} PDK BJT {modname}",
+        port_list=deepcopy(num2device[numterminals]),
+        paramtype=Sky130BipolarParams,
+    )
+
+    return mod
+
+
+def _cap_module(
+    modname: str,
+    numterminals: int,
+    params: h.Param,
+) -> h.ExternalModule:
+
+    num2device = {2: PhysicalCapacitor, 3: ThreeTerminalCapacitor}
+
+    """Capacitor Module creator"""
+    mod = h.ExternalModule(
+        domain=PDK_NAME,
+        name=modname,
+        desc=f"{PDK_NAME} PDK Cap{numterminals} {modname}",
+        port_list=deepcopy(num2device[numterminals].port_list),
+        paramtype=params,
+    )
+
+    return mod
+
+
+PerpVPPPorts = [
+    h.Port(name="p"),
+    h.Port(name="n"),
+    h.Port(name="t", desc="Top Shield"),
+    h.Port(name="b", desc="Bottom Shield"),
+]
+
+
+def _vpp_module(
+    modname: str,
+    num_terminals: int,
+) -> h.ExternalModule:
+    """VPP Creator module"""
+
+    if num_terminals == 3:
+
+        mod = h.ExternalModule(
+            domain=PDK_NAME,
+            name=modname,
+            desc=f"{PDK_NAME} PDK Parallel VPP {num_terminals} {modname}",
+            port_list=deepcopy(h.primitives.ThreeTerminalPorts),
+            paramtype=Sky130VPPParams,
+        )
+
+    elif num_terminals == 4:
+
+        mod = h.ExternalModule(
+            domain=PDK_NAME,
+            name=modname,
+            desc=f"{PDK_NAME} PDK Perpendicular VPP {modname}",
+            port_list=deepcopy(PerpVPPPorts),
+            paramtype=Sky130VPPParams,
+        )
+
+    return mod
+
+
+def _logic_module(
+    modname: str,
+    family: str,
+    terminals: List[str],
+) -> h.ExternalModule:
+
+    mod = h.ExternalModule(
+        domain=PDK_NAME,
+        name=modname,
+        desc=f"{family} {modname} Logic Circuit",
+        port_list=[h.Port(name=i) for i in terminals],
+        paramtype=Sky130LogicParams,
+    )
+
+    return mod
+
+
+# Individuate component types
+MosKey = Tuple[str, MosType, MosVth, MosFamily]
+
+"""
+These dictionaries are used to map all of the devices of the Sky130 technology
+to their corresponding caller functions above. Keys and names are used to 
+differentiate individual components and populate a namespace which can be used
+to find and determine the correct internal device to use.
+"""
+
+xtors: Dict[MosKey, h.ExternalModule] = {
+    # Add all generic transistors
+    ("NMOS_1p8V_STD", MosType.NMOS, MosVth.STD, MosFamily.CORE): _xtor_module(
+        "sky130_fd_pr__nfet_01v8"
+    ),
+    ("NMOS_1p8V_LOW", MosType.NMOS, MosVth.LOW, MosFamily.CORE): _xtor_module(
+        "sky130_fd_pr__nfet_01v8_lvt"
+    ),
+    ("PMOS_1p8V_STD", MosType.PMOS, MosVth.STD, MosFamily.CORE): _xtor_module(
+        "sky130_fd_pr__pfet_01v8"
+    ),
+    ("PMOS_1p8V_HIGH", MosType.PMOS, MosVth.HIGH, MosFamily.CORE): _xtor_module(
+        "sky130_fd_pr__pfet_01v8_hvt"
+    ),
+    ("PMOS_1p8V_LOW", MosType.PMOS, MosVth.LOW, MosFamily.CORE): _xtor_module(
+        "sky130_fd_pr__pfet_01v8_lvt"
+    ),
+    ("PMOS_5p5V_D10_STD", MosType.PMOS, MosVth.STD, MosFamily.IO): _xtor_module(
+        "sky130_fd_pr__pfet_g5v0d10v5"
+    ),
+    ("NMOS_5p5V_D10_STD", MosType.NMOS, MosVth.STD, MosFamily.IO): _xtor_module(
+        "sky130_fd_pr__nfet_g5v0d10v5"
+    ),
+    ("PMOS_5p5V_D16_STD", MosType.PMOS, MosVth.STD, MosFamily.IO): _xtor_module(
+        "sky130_fd_pr__pfet_g5v0d16v0"
+    ),
+    ("NMOS_20p0V_STD", MosType.NMOS, MosVth.STD, MosFamily.NONE): _xtor_module(
+        "sky130_fd_pr__nfet_20v0", params=Sky130Mos20VParams
+    ),
+    ("NMOS_20p0V_LOW", MosType.NMOS, MosVth.ZERO, MosFamily.NONE): _xtor_module(
+        "sky130_fd_pr__nfet_20v0_zvt", params=Sky130Mos20VParams
+    ),
+    ("NMOS_ISO_20p0V", MosType.NMOS, MosVth.STD, MosFamily.NONE): _xtor_module(
+        "sky130_fd_pr__nfet_20v0_iso", params=Sky130Mos20VParams, num_terminals=5
+    ),
+    ("PMOS_20p0V", MosType.PMOS, MosVth.STD, MosFamily.NONE): _xtor_module(
+        "sky130_fd_pr__pfet_20v0", params=Sky130Mos20VParams
+    ),
+    # Note there are no NMOS HVT!
+    # Add Native FET entries
+    ("NMOS_3p3V_NAT", MosType.NMOS, MosVth.NATIVE, MosFamily.NONE): _xtor_module(
+        "sky130_fd_pr__nfet_03v3_nvt"
+    ),
+    ("NMOS_5p0V_NAT", MosType.NMOS, MosVth.NATIVE, MosFamily.NONE): _xtor_module(
+        "sky130_fd_pr__nfet_05v0_nvt"
+    ),
+    ("NMOS_20p0V_NAT", MosType.NMOS, MosVth.NATIVE, MosFamily.NONE): _xtor_module(
+        "sky130_fd_pr__nfet_20v0_nvt", params=Sky130Mos20VParams
+    ),
+    # Add ESD FET entries
+    ("ESD_NMOS_1p8V", MosType.NMOS, MosVth.STD, MosFamily.CORE): _xtor_module(
+        "sky130_fd_pr__esd_nfet_01v8"
+    ),
+    ("ESD_NMOS_5p5V_D10", MosType.NMOS, MosVth.STD, MosFamily.IO): _xtor_module(
+        "sky130_fd_pr__esd_nfet_g5v0d10v5"
+    ),
+    ("ESD_NMOS_5p5V_NAT", MosType.NMOS, MosVth.NATIVE, MosFamily.IO): _xtor_module(
+        "sky130_fd_pr__esd_nfet_g5v0d10v5_nvt"
+    ),
+    ("ESD_PMOS_5p5V", MosType.PMOS, MosVth.STD, MosFamily.IO): _xtor_module(
+        "sky130_fd_pr__esd_pfet_g5v0d10v5"
+    ),
+}
+
+ress: Dict[str, h.ExternalModule] = {
+    # 2-terminal generic resistors
+    "GEN_PO": _res_module(
+        "sky130_fd_pr__res_generic_po",
+        2,
+        Sky130GenResParams,
+        spicetype=SpiceType.RESISTOR,
+    ),
+    "GEN_L1": _res_module(
+        "sky130_fd_pr__res_generic_l1",
+        2,
+        Sky130GenResParams,
+        spicetype=SpiceType.RESISTOR,
+    ),
+    "GEN_M1": _res_module(
+        "sky130_fd_pr__res_generic_m1",
+        2,
+        Sky130GenResParams,
+        spicetype=SpiceType.RESISTOR,
+    ),
+    "GEN_M2": _res_module(
+        "sky130_fd_pr__res_generic_m2",
+        2,
+        Sky130GenResParams,
+        spicetype=SpiceType.RESISTOR,
+    ),
+    "GEN_M3": _res_module(
+        "sky130_fd_pr__res_generic_m3",
+        2,
+        Sky130GenResParams,
+        spicetype=SpiceType.RESISTOR,
+    ),
+    "GEN_M4": _res_module(
+        "sky130_fd_pr__res_generic_m4",
+        2,
+        Sky130GenResParams,
+        spicetype=SpiceType.RESISTOR,
+    ),
+    "GEN_M5": _res_module(
+        "sky130_fd_pr__res_generic_m5",
+        2,
+        Sky130GenResParams,
+        spicetype=SpiceType.RESISTOR,
+    ),
+    # 3-terminal generic resistors
+    "GEN_ND": _res_module("sky130_fd_pr__res_generic_nd", 3, Sky130GenResParams),
+    "GEN_PD": _res_module("sky130_fd_pr__res_generic_pd", 3, Sky130GenResParams),
+    "GEN_ISO_PW": _res_module(
+        "sky130_fd_pr__res_iso_pw",
+        3,
+        Sky130GenResParams,
+    ),
+    # 3-terminal precision resistors
+    "PP_PREC_0p35": _res_module(
+        "sky130_fd_pr__res_high_po_0p35", 3, Sky130PrecResParams
+    ),
+    "PP_PREC_0p69": _res_module(
+        "sky130_fd_pr__res_high_po_0p69", 3, Sky130PrecResParams
+    ),
+    "PP_PREC_1p41": _res_module(
+        "sky130_fd_pr__res_high_po_1p41", 3, Sky130PrecResParams
+    ),
+    "PP_PREC_2p85": _res_module(
+        "sky130_fd_pr__res_high_po_2p85", 3, Sky130PrecResParams
+    ),
+    "PP_PREC_5p73": _res_module(
+        "sky130_fd_pr__res_high_po_5p73", 3, Sky130PrecResParams
+    ),
+    "PM_PREC_0p35": _res_module(
+        "sky130_fd_pr__res_xhigh_po_0p35", 3, Sky130PrecResParams
+    ),
+    "PM_PREC_0p69": _res_module(
+        "sky130_fd_pr__res_xhigh_po_0p69", 3, Sky130PrecResParams
+    ),
+    "PM_PREC_1p41": _res_module(
+        "sky130_fd_pr__res_xhigh_po_1p41", 3, Sky130PrecResParams
+    ),
+    "PM_PREC_2p85": _res_module(
+        "sky130_fd_pr__res_xhigh_po_2p85", 3, Sky130PrecResParams
+    ),
+    "PM_PREC_5p73": _res_module(
+        "sky130_fd_pr__res_xhigh_po_5p73", 3, Sky130PrecResParams
+    ),
+}
+
+diodes: Dict[str, h.ExternalModule] = {
+    # Add diodes
+    "PWND_5p5V": _diode_module("sky130_fd_pr__diode_pw2nd_05v5"),
+    "PWND_11p0V": _diode_module("sky130_fd_pr__diode_pw2nd_11v0"),
+    "PWND_5p5V_NAT": _diode_module("sky130_fd_pr__diode_pw2nd_05v5_nvt"),
+    "PWND_5p5V_LVT": _diode_module("sky130_fd_pr__diode_pw2nd_05v5_lvt"),
+    "PDNW_5p5V": _diode_module("sky130_fd_pr__diode_pd2nw_05v5"),
+    "PDNW_11p0V": _diode_module("sky130_fd_pr__diode_pd2nw_11v0"),
+    "PDNW_5p5V_HVT": _diode_module("sky130_fd_pr__diode_pd2nw_05v5_hvt"),
+    "PDNW_5p5V_LVT": _diode_module("sky130_fd_pr__diode_pd2nw_05v5_lvt"),
+    "PX_RF_PSNW": _diode_module("sky130_fd_pr__model__parasitic__rf_diode_ps2nw"),
+    "PX_RF_PWDN": _diode_module("sky130_fd_pr__model__parasitic__rf_diode_pw2dn"),
+    "PX_PWDN": _diode_module("sky130_fd_pr__model__parasitic__diode_pw2dn"),
+    "PX_PSDN": _diode_module("sky130_fd_pr__model__parasitic__diode_ps2dn"),
+    "PX_PSNW": _diode_module("sky130_fd_pr__model__parasitic__diode_ps2nw"),
+}
+
+"""
+BJTs in this PDK are all subcircuits but are distributed in a way that is quite unusual
+and can make it particularly difficult to access them without a PR to the PDK itself.
+
+As noted here there is no functional difference between rf and non-rf BJTs in SKY130:
+
+https://open-source-silicon.slack.com/archives/C016HUV935L/p1650549447460139?thread_ts=1650545374.248099&cid=C016HUV935L
+"""
+bjts: Dict[str, h.ExternalModule] = {
+    # Add BJTs
+    "NPN_5p0V_1x2": _bjt_module("sky130_fd_pr__npn_05v5_W1p00L2p00", numterminals=4),
+    "NPN_11p0V_1x1": _bjt_module("sky130_fd_pr__npn_11v0_W1p00L1p00", numterminals=4),
+    "NPN_5p0V_1x1": _bjt_module("sky130_fd_pr__npn_05v5_W1p00L1p00", numterminals=4),
+    "PNP_5p0V_0p68x0p68": _bjt_module("sky130_fd_pr__pnp_05v5_W0p68L0p68"),
+    "PNP_5p0V_3p40x3p40": _bjt_module("sky130_fd_pr__pnp_05v5_W3p40L3p40"),
+}
+
+caps: Dict[str, h.ExternalModule] = {
+    # List all MiM capacitors
+    # https://open-source-silicon.slack.com/archives/C016HUV935L/p1618923323152300?thread_ts=1618887703.151600&cid=C016HUV935L
+    "MIM_M3": _cap_module(
+        "sky130_fd_pr__cap_mim_m3_1",
+        numterminals=2,
+        params=Sky130MimParams,
+    ),
+    "MIM_M4": _cap_module(
+        "sky130_fd_pr__cap_mim_m3_2",
+        numterminals=2,
+        params=Sky130MimParams,
+    ),
+    # List available Varactors
+    "VAR_LVT": _cap_module(
+        "sky130_fd_pr__cap_var_lvt",
+        numterminals=3,
+        params=Sky130VarParams,
+    ),
+    "VAR_HVT": _cap_module(
+        "sky130_fd_pr__cap_var_hvt",
+        numterminals=3,
+        params=Sky130VarParams,
+    ),
+}
+
+vpps: Dict[str, h.ExternalModule] = {
+    # List Parallel VPP capacitors
+    "VPP_PARA_1": _vpp_module("sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2", 3),
+    "VPP_PARA_2": _vpp_module("sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield", 3),
+    "VPP_PARA_3": _vpp_module("sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield", 3),
+    "VPP_PARA_4": _vpp_module("sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield", 3),
+    "VPP_PARA_5": _vpp_module("sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield", 3),
+    "VPP_PARA_6": _vpp_module(
+        "sky130_fd_pr__cap_vpp_44p7x23p1_pol1m1m2m3m4m5_noshield", 3
+    ),
+    "VPP_PARA_7": _vpp_module(
+        "sky130_fd_pr__cap_vpp_02p7x06p1_m1m2m3m4_shieldl1_fingercap", 3
+    ),
+    "VPP_PARA_8": _vpp_module(
+        "sky130_fd_pr__cap_vpp_02p9x06p1_m1m2m3m4_shieldl1_fingercap2", 3
+    ),
+    "VPP_PARA_9": _vpp_module(
+        "sky130_fd_pr__cap_vpp_02p7x11p1_m1m2m3m4_shieldl1_fingercap", 3
+    ),
+    "VPP_PARA_10": _vpp_module(
+        "sky130_fd_pr__cap_vpp_02p7x21p1_m1m2m3m4_shieldl1_fingercap", 3
+    ),
+    "VPP_PARA_11": _vpp_module(
+        "sky130_fd_pr__cap_vpp_02p7x41p1_m1m2m3m4_shieldl1_fingercap", 3
+    ),
+    # List Perpendicular VPP capacitors
+    "VPP_PERP_1": _vpp_module("sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldm5", 4),
+    "VPP_PERP_2": _vpp_module(
+        "sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3m4_shieldpom5", 4
+    ),
+    "VPP_PERP_3": _vpp_module("sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3m4_shieldl1m5", 4),
+    "VPP_PERP_4": _vpp_module(
+        "sky130_fd_pr__cap_vpp_04p4x04p6_m1m2m3_shieldl1m5_floatm4", 4
+    ),
+    "VPP_PERP_5": _vpp_module(
+        "sky130_fd_pr__cap_vpp_08p6x07p8_m1m2m3_shieldl1m5_floatm4", 4
+    ),
+    "VPP_PERP_6": _vpp_module(
+        "sky130_fd_pr__cap_vpp_11p5x11p7_m1m2m3_shieldl1m5_floatm4", 4
+    ),
+    "VPP_PERP_7": _vpp_module("sky130_fd_pr__cap_vpp_11p5x11p7_l1m1m2m3_shieldm4", 4),
+    "VPP_PERP_8": _vpp_module("sky130_fd_pr__cap_vpp_06p8x06p1_l1m1m2m3_shieldpom4", 4),
+    "VPP_PERP_9": _vpp_module("sky130_fd_pr__cap_vpp_06p8x06p1_m1m2m3_shieldl1m4", 4),
+    "VPP_PERP_10": _vpp_module(
+        "sky130_fd_pr__cap_vpp_11p3x11p8_l1m1m2m3m4_shieldm5_nhvtop", 4
+    ),
+}
+
+hd: Dict[str, h.ExternalModule] = {
+    "sky130_fd_sc_hd__a2bb2o_1": _logic_module(
+        "sky130_fd_sc_hd__a2bb2o_1",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a2bb2o_2": _logic_module(
+        "sky130_fd_sc_hd__a2bb2o_2",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a2bb2o_4": _logic_module(
+        "sky130_fd_sc_hd__a2bb2o_4",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a2bb2oi_1": _logic_module(
+        "sky130_fd_sc_hd__a2bb2oi_1",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a2bb2oi_2": _logic_module(
+        "sky130_fd_sc_hd__a2bb2oi_2",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a2bb2oi_4": _logic_module(
+        "sky130_fd_sc_hd__a2bb2oi_4",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a21bo_1": _logic_module(
+        "sky130_fd_sc_hd__a21bo_1",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a21bo_2": _logic_module(
+        "sky130_fd_sc_hd__a21bo_2",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a21bo_4": _logic_module(
+        "sky130_fd_sc_hd__a21bo_4",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a21boi_0": _logic_module(
+        "sky130_fd_sc_hd__a21boi_0",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a21boi_1": _logic_module(
+        "sky130_fd_sc_hd__a21boi_1",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a21boi_2": _logic_module(
+        "sky130_fd_sc_hd__a21boi_2",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a21boi_4": _logic_module(
+        "sky130_fd_sc_hd__a21boi_4",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a21o_1": _logic_module(
+        "sky130_fd_sc_hd__a21o_1",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a21o_2": _logic_module(
+        "sky130_fd_sc_hd__a21o_2",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a21o_4": _logic_module(
+        "sky130_fd_sc_hd__a21o_4",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a21oi_1": _logic_module(
+        "sky130_fd_sc_hd__a21oi_1",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a21oi_2": _logic_module(
+        "sky130_fd_sc_hd__a21oi_2",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a21oi_4": _logic_module(
+        "sky130_fd_sc_hd__a21oi_4",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a22o_1": _logic_module(
+        "sky130_fd_sc_hd__a22o_1",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a22o_2": _logic_module(
+        "sky130_fd_sc_hd__a22o_2",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a22o_4": _logic_module(
+        "sky130_fd_sc_hd__a22o_4",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a22oi_1": _logic_module(
+        "sky130_fd_sc_hd__a22oi_1",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a22oi_2": _logic_module(
+        "sky130_fd_sc_hd__a22oi_2",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a22oi_4": _logic_module(
+        "sky130_fd_sc_hd__a22oi_4",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a31o_1": _logic_module(
+        "sky130_fd_sc_hd__a31o_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a31o_2": _logic_module(
+        "sky130_fd_sc_hd__a31o_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a31o_4": _logic_module(
+        "sky130_fd_sc_hd__a31o_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a31oi_1": _logic_module(
+        "sky130_fd_sc_hd__a31oi_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a31oi_2": _logic_module(
+        "sky130_fd_sc_hd__a31oi_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a31oi_4": _logic_module(
+        "sky130_fd_sc_hd__a31oi_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a32o_1": _logic_module(
+        "sky130_fd_sc_hd__a32o_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a32o_2": _logic_module(
+        "sky130_fd_sc_hd__a32o_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a32o_4": _logic_module(
+        "sky130_fd_sc_hd__a32o_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a32oi_1": _logic_module(
+        "sky130_fd_sc_hd__a32oi_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a32oi_2": _logic_module(
+        "sky130_fd_sc_hd__a32oi_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a32oi_4": _logic_module(
+        "sky130_fd_sc_hd__a32oi_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a41o_1": _logic_module(
+        "sky130_fd_sc_hd__a41o_1",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a41o_2": _logic_module(
+        "sky130_fd_sc_hd__a41o_2",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a41o_4": _logic_module(
+        "sky130_fd_sc_hd__a41o_4",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a41oi_1": _logic_module(
+        "sky130_fd_sc_hd__a41oi_1",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a41oi_2": _logic_module(
+        "sky130_fd_sc_hd__a41oi_2",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a41oi_4": _logic_module(
+        "sky130_fd_sc_hd__a41oi_4",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a211o_1": _logic_module(
+        "sky130_fd_sc_hd__a211o_1",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a211o_2": _logic_module(
+        "sky130_fd_sc_hd__a211o_2",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a211o_4": _logic_module(
+        "sky130_fd_sc_hd__a211o_4",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a211oi_1": _logic_module(
+        "sky130_fd_sc_hd__a211oi_1",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a211oi_2": _logic_module(
+        "sky130_fd_sc_hd__a211oi_2",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a211oi_4": _logic_module(
+        "sky130_fd_sc_hd__a211oi_4",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a221o_1": _logic_module(
+        "sky130_fd_sc_hd__a221o_1",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a221o_2": _logic_module(
+        "sky130_fd_sc_hd__a221o_2",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a221o_4": _logic_module(
+        "sky130_fd_sc_hd__a221o_4",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a221oi_1": _logic_module(
+        "sky130_fd_sc_hd__a221oi_1",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a221oi_2": _logic_module(
+        "sky130_fd_sc_hd__a221oi_2",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a221oi_4": _logic_module(
+        "sky130_fd_sc_hd__a221oi_4",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a222oi_1": _logic_module(
+        "sky130_fd_sc_hd__a222oi_1",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a311o_1": _logic_module(
+        "sky130_fd_sc_hd__a311o_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a311o_2": _logic_module(
+        "sky130_fd_sc_hd__a311o_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a311o_4": _logic_module(
+        "sky130_fd_sc_hd__a311o_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a311oi_1": _logic_module(
+        "sky130_fd_sc_hd__a311oi_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a311oi_2": _logic_module(
+        "sky130_fd_sc_hd__a311oi_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a311oi_4": _logic_module(
+        "sky130_fd_sc_hd__a311oi_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a2111o_1": _logic_module(
+        "sky130_fd_sc_hd__a2111o_1",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a2111o_2": _logic_module(
+        "sky130_fd_sc_hd__a2111o_2",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a2111o_4": _logic_module(
+        "sky130_fd_sc_hd__a2111o_4",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__a2111oi_0": _logic_module(
+        "sky130_fd_sc_hd__a2111oi_0",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a2111oi_1": _logic_module(
+        "sky130_fd_sc_hd__a2111oi_1",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a2111oi_2": _logic_module(
+        "sky130_fd_sc_hd__a2111oi_2",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__a2111oi_4": _logic_module(
+        "sky130_fd_sc_hd__a2111oi_4",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__and2_0": _logic_module(
+        "sky130_fd_sc_hd__and2_0",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and2_1": _logic_module(
+        "sky130_fd_sc_hd__and2_1",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and2_2": _logic_module(
+        "sky130_fd_sc_hd__and2_2",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and2_4": _logic_module(
+        "sky130_fd_sc_hd__and2_4",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and2b_1": _logic_module(
+        "sky130_fd_sc_hd__and2b_1",
+        "High Density",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and2b_2": _logic_module(
+        "sky130_fd_sc_hd__and2b_2",
+        "High Density",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and2b_4": _logic_module(
+        "sky130_fd_sc_hd__and2b_4",
+        "High Density",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and3_1": _logic_module(
+        "sky130_fd_sc_hd__and3_1",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and3_2": _logic_module(
+        "sky130_fd_sc_hd__and3_2",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and3_4": _logic_module(
+        "sky130_fd_sc_hd__and3_4",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and3b_1": _logic_module(
+        "sky130_fd_sc_hd__and3b_1",
+        "High Density",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and3b_2": _logic_module(
+        "sky130_fd_sc_hd__and3b_2",
+        "High Density",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and3b_4": _logic_module(
+        "sky130_fd_sc_hd__and3b_4",
+        "High Density",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and4_1": _logic_module(
+        "sky130_fd_sc_hd__and4_1",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and4_2": _logic_module(
+        "sky130_fd_sc_hd__and4_2",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and4_4": _logic_module(
+        "sky130_fd_sc_hd__and4_4",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and4b_1": _logic_module(
+        "sky130_fd_sc_hd__and4b_1",
+        "High Density",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and4b_2": _logic_module(
+        "sky130_fd_sc_hd__and4b_2",
+        "High Density",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and4b_4": _logic_module(
+        "sky130_fd_sc_hd__and4b_4",
+        "High Density",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and4bb_1": _logic_module(
+        "sky130_fd_sc_hd__and4bb_1",
+        "High Density",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and4bb_2": _logic_module(
+        "sky130_fd_sc_hd__and4bb_2",
+        "High Density",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__and4bb_4": _logic_module(
+        "sky130_fd_sc_hd__and4bb_4",
+        "High Density",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__buf_1": _logic_module(
+        "sky130_fd_sc_hd__buf_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__buf_2": _logic_module(
+        "sky130_fd_sc_hd__buf_2",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__buf_4": _logic_module(
+        "sky130_fd_sc_hd__buf_4",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__buf_6": _logic_module(
+        "sky130_fd_sc_hd__buf_6",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__buf_8": _logic_module(
+        "sky130_fd_sc_hd__buf_8",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__buf_12": _logic_module(
+        "sky130_fd_sc_hd__buf_12",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__buf_16": _logic_module(
+        "sky130_fd_sc_hd__buf_16",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__bufbuf_8": _logic_module(
+        "sky130_fd_sc_hd__bufbuf_8",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__bufbuf_16": _logic_module(
+        "sky130_fd_sc_hd__bufbuf_16",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__bufinv_8": _logic_module(
+        "sky130_fd_sc_hd__bufinv_8",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__bufinv_16": _logic_module(
+        "sky130_fd_sc_hd__bufinv_16",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__clkbuf_1": _logic_module(
+        "sky130_fd_sc_hd__clkbuf_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkbuf_2": _logic_module(
+        "sky130_fd_sc_hd__clkbuf_2",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkbuf_4": _logic_module(
+        "sky130_fd_sc_hd__clkbuf_4",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkbuf_8": _logic_module(
+        "sky130_fd_sc_hd__clkbuf_8",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkbuf_16": _logic_module(
+        "sky130_fd_sc_hd__clkbuf_16",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkdlybuf4s15_1": _logic_module(
+        "sky130_fd_sc_hd__clkdlybuf4s15_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkdlybuf4s15_2": _logic_module(
+        "sky130_fd_sc_hd__clkdlybuf4s15_2",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkdlybuf4s18_1": _logic_module(
+        "sky130_fd_sc_hd__clkdlybuf4s18_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkdlybuf4s18_2": _logic_module(
+        "sky130_fd_sc_hd__clkdlybuf4s18_2",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkdlybuf4s25_1": _logic_module(
+        "sky130_fd_sc_hd__clkdlybuf4s25_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkdlybuf4s25_2": _logic_module(
+        "sky130_fd_sc_hd__clkdlybuf4s25_2",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkdlybuf4s50_1": _logic_module(
+        "sky130_fd_sc_hd__clkdlybuf4s50_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkdlybuf4s50_2": _logic_module(
+        "sky130_fd_sc_hd__clkdlybuf4s50_2",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__clkinv_1": _logic_module(
+        "sky130_fd_sc_hd__clkinv_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__clkinv_2": _logic_module(
+        "sky130_fd_sc_hd__clkinv_2",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__clkinv_4": _logic_module(
+        "sky130_fd_sc_hd__clkinv_4",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__clkinv_8": _logic_module(
+        "sky130_fd_sc_hd__clkinv_8",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__clkinv_16": _logic_module(
+        "sky130_fd_sc_hd__clkinv_16",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__clkinvlp_2": _logic_module(
+        "sky130_fd_sc_hd__clkinvlp_2",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__clkinvlp_4": _logic_module(
+        "sky130_fd_sc_hd__clkinvlp_4",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__conb_1": _logic_module(
+        "sky130_fd_sc_hd__conb_1",
+        "High Density",
+        ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"],
+    ),
+    "sky130_fd_sc_hd__decap_3": _logic_module(
+        "sky130_fd_sc_hd__decap_3", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__decap_4": _logic_module(
+        "sky130_fd_sc_hd__decap_4", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__decap_6": _logic_module(
+        "sky130_fd_sc_hd__decap_6", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__decap_8": _logic_module(
+        "sky130_fd_sc_hd__decap_8", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__decap_12": _logic_module(
+        "sky130_fd_sc_hd__decap_12", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__dfbbn_1": _logic_module(
+        "sky130_fd_sc_hd__dfbbn_1",
+        "High Density",
+        ["CLK_N", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dfbbn_2": _logic_module(
+        "sky130_fd_sc_hd__dfbbn_2",
+        "High Density",
+        ["CLK_N", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dfbbp_1": _logic_module(
+        "sky130_fd_sc_hd__dfbbp_1",
+        "High Density",
+        ["CLK", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dfrbp_1": _logic_module(
+        "sky130_fd_sc_hd__dfrbp_1",
+        "High Density",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dfrbp_2": _logic_module(
+        "sky130_fd_sc_hd__dfrbp_2",
+        "High Density",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dfrtn_1": _logic_module(
+        "sky130_fd_sc_hd__dfrtn_1",
+        "High Density",
+        ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dfrtp_1": _logic_module(
+        "sky130_fd_sc_hd__dfrtp_1",
+        "High Density",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dfrtp_2": _logic_module(
+        "sky130_fd_sc_hd__dfrtp_2",
+        "High Density",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dfrtp_4": _logic_module(
+        "sky130_fd_sc_hd__dfrtp_4",
+        "High Density",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dfsbp_1": _logic_module(
+        "sky130_fd_sc_hd__dfsbp_1",
+        "High Density",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dfsbp_2": _logic_module(
+        "sky130_fd_sc_hd__dfsbp_2",
+        "High Density",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dfstp_1": _logic_module(
+        "sky130_fd_sc_hd__dfstp_1",
+        "High Density",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dfstp_2": _logic_module(
+        "sky130_fd_sc_hd__dfstp_2",
+        "High Density",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dfstp_4": _logic_module(
+        "sky130_fd_sc_hd__dfstp_4",
+        "High Density",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dfxbp_1": _logic_module(
+        "sky130_fd_sc_hd__dfxbp_1",
+        "High Density",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dfxbp_2": _logic_module(
+        "sky130_fd_sc_hd__dfxbp_2",
+        "High Density",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dfxtp_1": _logic_module(
+        "sky130_fd_sc_hd__dfxtp_1",
+        "High Density",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dfxtp_2": _logic_module(
+        "sky130_fd_sc_hd__dfxtp_2",
+        "High Density",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dfxtp_4": _logic_module(
+        "sky130_fd_sc_hd__dfxtp_4",
+        "High Density",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__diode_2": _logic_module(
+        "sky130_fd_sc_hd__diode_2",
+        "High Density",
+        ["DIODE", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hd__dlclkp_1": _logic_module(
+        "sky130_fd_sc_hd__dlclkp_1",
+        "High Density",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hd__dlclkp_2": _logic_module(
+        "sky130_fd_sc_hd__dlclkp_2",
+        "High Density",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hd__dlclkp_4": _logic_module(
+        "sky130_fd_sc_hd__dlclkp_4",
+        "High Density",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hd__dlrbn_1": _logic_module(
+        "sky130_fd_sc_hd__dlrbn_1",
+        "High Density",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dlrbn_2": _logic_module(
+        "sky130_fd_sc_hd__dlrbn_2",
+        "High Density",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dlrbp_1": _logic_module(
+        "sky130_fd_sc_hd__dlrbp_1",
+        "High Density",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dlrbp_2": _logic_module(
+        "sky130_fd_sc_hd__dlrbp_2",
+        "High Density",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dlrtn_1": _logic_module(
+        "sky130_fd_sc_hd__dlrtn_1",
+        "High Density",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dlrtn_2": _logic_module(
+        "sky130_fd_sc_hd__dlrtn_2",
+        "High Density",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dlrtn_4": _logic_module(
+        "sky130_fd_sc_hd__dlrtn_4",
+        "High Density",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dlrtp_1": _logic_module(
+        "sky130_fd_sc_hd__dlrtp_1",
+        "High Density",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dlrtp_2": _logic_module(
+        "sky130_fd_sc_hd__dlrtp_2",
+        "High Density",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dlrtp_4": _logic_module(
+        "sky130_fd_sc_hd__dlrtp_4",
+        "High Density",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dlxbn_1": _logic_module(
+        "sky130_fd_sc_hd__dlxbn_1",
+        "High Density",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dlxbn_2": _logic_module(
+        "sky130_fd_sc_hd__dlxbn_2",
+        "High Density",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dlxbp_1": _logic_module(
+        "sky130_fd_sc_hd__dlxbp_1",
+        "High Density",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__dlxtn_1": _logic_module(
+        "sky130_fd_sc_hd__dlxtn_1",
+        "High Density",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dlxtn_2": _logic_module(
+        "sky130_fd_sc_hd__dlxtn_2",
+        "High Density",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dlxtn_4": _logic_module(
+        "sky130_fd_sc_hd__dlxtn_4",
+        "High Density",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dlxtp_1": _logic_module(
+        "sky130_fd_sc_hd__dlxtp_1",
+        "High Density",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__dlygate4sd1_1": _logic_module(
+        "sky130_fd_sc_hd__dlygate4sd1_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__dlygate4sd2_1": _logic_module(
+        "sky130_fd_sc_hd__dlygate4sd2_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__dlygate4sd3_1": _logic_module(
+        "sky130_fd_sc_hd__dlygate4sd3_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__dlymetal6s2s_1": _logic_module(
+        "sky130_fd_sc_hd__dlymetal6s2s_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__dlymetal6s4s_1": _logic_module(
+        "sky130_fd_sc_hd__dlymetal6s4s_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__dlymetal6s6s_1": _logic_module(
+        "sky130_fd_sc_hd__dlymetal6s6s_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__ebufn_1": _logic_module(
+        "sky130_fd_sc_hd__ebufn_1",
+        "High Density",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__ebufn_2": _logic_module(
+        "sky130_fd_sc_hd__ebufn_2",
+        "High Density",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__ebufn_4": _logic_module(
+        "sky130_fd_sc_hd__ebufn_4",
+        "High Density",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__ebufn_8": _logic_module(
+        "sky130_fd_sc_hd__ebufn_8",
+        "High Density",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__edfxbp_1": _logic_module(
+        "sky130_fd_sc_hd__edfxbp_1",
+        "High Density",
+        ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__edfxtp_1": _logic_module(
+        "sky130_fd_sc_hd__edfxtp_1",
+        "High Density",
+        ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__einvn_0": _logic_module(
+        "sky130_fd_sc_hd__einvn_0",
+        "High Density",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__einvn_1": _logic_module(
+        "sky130_fd_sc_hd__einvn_1",
+        "High Density",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__einvn_2": _logic_module(
+        "sky130_fd_sc_hd__einvn_2",
+        "High Density",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__einvn_4": _logic_module(
+        "sky130_fd_sc_hd__einvn_4",
+        "High Density",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__einvn_8": _logic_module(
+        "sky130_fd_sc_hd__einvn_8",
+        "High Density",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__einvp_1": _logic_module(
+        "sky130_fd_sc_hd__einvp_1",
+        "High Density",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__einvp_2": _logic_module(
+        "sky130_fd_sc_hd__einvp_2",
+        "High Density",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__einvp_4": _logic_module(
+        "sky130_fd_sc_hd__einvp_4",
+        "High Density",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__einvp_8": _logic_module(
+        "sky130_fd_sc_hd__einvp_8",
+        "High Density",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hd__fa_1": _logic_module(
+        "sky130_fd_sc_hd__fa_1",
+        "High Density",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hd__fa_2": _logic_module(
+        "sky130_fd_sc_hd__fa_2",
+        "High Density",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hd__fa_4": _logic_module(
+        "sky130_fd_sc_hd__fa_4",
+        "High Density",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hd__fah_1": _logic_module(
+        "sky130_fd_sc_hd__fah_1",
+        "High Density",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hd__fahcin_1": _logic_module(
+        "sky130_fd_sc_hd__fahcin_1",
+        "High Density",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hd__fahcon_1": _logic_module(
+        "sky130_fd_sc_hd__fahcon_1",
+        "High Density",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"],
+    ),
+    "sky130_fd_sc_hd__fill_1": _logic_module(
+        "sky130_fd_sc_hd__fill_1", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__fill_2": _logic_module(
+        "sky130_fd_sc_hd__fill_2", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__fill_4": _logic_module(
+        "sky130_fd_sc_hd__fill_4", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__fill_8": _logic_module(
+        "sky130_fd_sc_hd__fill_8", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__ha_1": _logic_module(
+        "sky130_fd_sc_hd__ha_1",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hd__ha_2": _logic_module(
+        "sky130_fd_sc_hd__ha_2",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hd__ha_4": _logic_module(
+        "sky130_fd_sc_hd__ha_4",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hd__inv_1": _logic_module(
+        "sky130_fd_sc_hd__inv_1",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__inv_2": _logic_module(
+        "sky130_fd_sc_hd__inv_2",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__inv_4": _logic_module(
+        "sky130_fd_sc_hd__inv_4",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__inv_6": _logic_module(
+        "sky130_fd_sc_hd__inv_6",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__inv_8": _logic_module(
+        "sky130_fd_sc_hd__inv_8",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__inv_12": _logic_module(
+        "sky130_fd_sc_hd__inv_12",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__inv_16": _logic_module(
+        "sky130_fd_sc_hd__inv_16",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__lpflow_bleeder_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_bleeder_1",
+        "High Density",
+        ["SHORT", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hd__lpflow_clkbufkapwr_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_clkbufkapwr_1",
+        "High Density",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_clkbufkapwr_2": _logic_module(
+        "sky130_fd_sc_hd__lpflow_clkbufkapwr_2",
+        "High Density",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_clkbufkapwr_4": _logic_module(
+        "sky130_fd_sc_hd__lpflow_clkbufkapwr_4",
+        "High Density",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_clkbufkapwr_8": _logic_module(
+        "sky130_fd_sc_hd__lpflow_clkbufkapwr_8",
+        "High Density",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_clkbufkapwr_16": _logic_module(
+        "sky130_fd_sc_hd__lpflow_clkbufkapwr_16",
+        "High Density",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_clkinvkapwr_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_clkinvkapwr_1",
+        "High Density",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__lpflow_clkinvkapwr_2": _logic_module(
+        "sky130_fd_sc_hd__lpflow_clkinvkapwr_2",
+        "High Density",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__lpflow_clkinvkapwr_4": _logic_module(
+        "sky130_fd_sc_hd__lpflow_clkinvkapwr_4",
+        "High Density",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__lpflow_clkinvkapwr_8": _logic_module(
+        "sky130_fd_sc_hd__lpflow_clkinvkapwr_8",
+        "High Density",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__lpflow_clkinvkapwr_16": _logic_module(
+        "sky130_fd_sc_hd__lpflow_clkinvkapwr_16",
+        "High Density",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__lpflow_decapkapwr_3": _logic_module(
+        "sky130_fd_sc_hd__lpflow_decapkapwr_3",
+        "High Density",
+        ["KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hd__lpflow_decapkapwr_4": _logic_module(
+        "sky130_fd_sc_hd__lpflow_decapkapwr_4",
+        "High Density",
+        ["KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hd__lpflow_decapkapwr_6": _logic_module(
+        "sky130_fd_sc_hd__lpflow_decapkapwr_6",
+        "High Density",
+        ["KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hd__lpflow_decapkapwr_8": _logic_module(
+        "sky130_fd_sc_hd__lpflow_decapkapwr_8",
+        "High Density",
+        ["KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hd__lpflow_decapkapwr_12": _logic_module(
+        "sky130_fd_sc_hd__lpflow_decapkapwr_12",
+        "High Density",
+        ["KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hd__lpflow_inputiso0n_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_inputiso0n_1",
+        "High Density",
+        ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_inputiso0p_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_inputiso0p_1",
+        "High Density",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_inputiso1n_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_inputiso1n_1",
+        "High Density",
+        ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_inputiso1p_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_inputiso1p_1",
+        "High Density",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_inputisolatch_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_inputisolatch_1",
+        "High Density",
+        ["D", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__lpflow_isobufsrc_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_isobufsrc_1",
+        "High Density",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_isobufsrc_2": _logic_module(
+        "sky130_fd_sc_hd__lpflow_isobufsrc_2",
+        "High Density",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_isobufsrc_4": _logic_module(
+        "sky130_fd_sc_hd__lpflow_isobufsrc_4",
+        "High Density",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_isobufsrc_8": _logic_module(
+        "sky130_fd_sc_hd__lpflow_isobufsrc_8",
+        "High Density",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_isobufsrc_16": _logic_module(
+        "sky130_fd_sc_hd__lpflow_isobufsrc_16",
+        "High Density",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_isobufsrckapwr_16": _logic_module(
+        "sky130_fd_sc_hd__lpflow_isobufsrckapwr_16",
+        "High Density",
+        ["A", "SLEEP", "KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1",
+        "High Density",
+        ["A", "VGND", "VPB", "VPWRIN", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2": _logic_module(
+        "sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2",
+        "High Density",
+        ["A", "VGND", "VPB", "VPWRIN", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4": _logic_module(
+        "sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4",
+        "High Density",
+        ["A", "VGND", "VPB", "VPWRIN", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4": _logic_module(
+        "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4",
+        "High Density",
+        ["A", "LOWLVPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1": _logic_module(
+        "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1",
+        "High Density",
+        ["A", "LOWLVPWR", "VGND", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2": _logic_module(
+        "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2",
+        "High Density",
+        ["A", "LOWLVPWR", "VGND", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4": _logic_module(
+        "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4",
+        "High Density",
+        ["A", "LOWLVPWR", "VGND", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__macro_sparecell": _logic_module(
+        "sky130_fd_sc_hd__macro_sparecell",
+        "High Density",
+        ["VGND", "VNB", "VPB", "VPWR", "LO"],
+    ),
+    "sky130_fd_sc_hd__maj3_1": _logic_module(
+        "sky130_fd_sc_hd__maj3_1",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__maj3_2": _logic_module(
+        "sky130_fd_sc_hd__maj3_2",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__maj3_4": _logic_module(
+        "sky130_fd_sc_hd__maj3_4",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__mux2_1": _logic_module(
+        "sky130_fd_sc_hd__mux2_1",
+        "High Density",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__mux2_2": _logic_module(
+        "sky130_fd_sc_hd__mux2_2",
+        "High Density",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__mux2_4": _logic_module(
+        "sky130_fd_sc_hd__mux2_4",
+        "High Density",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__mux2_8": _logic_module(
+        "sky130_fd_sc_hd__mux2_8",
+        "High Density",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__mux2i_1": _logic_module(
+        "sky130_fd_sc_hd__mux2i_1",
+        "High Density",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__mux2i_2": _logic_module(
+        "sky130_fd_sc_hd__mux2i_2",
+        "High Density",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__mux2i_4": _logic_module(
+        "sky130_fd_sc_hd__mux2i_4",
+        "High Density",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__mux4_1": _logic_module(
+        "sky130_fd_sc_hd__mux4_1",
+        "High Density",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__mux4_2": _logic_module(
+        "sky130_fd_sc_hd__mux4_2",
+        "High Density",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__mux4_4": _logic_module(
+        "sky130_fd_sc_hd__mux4_4",
+        "High Density",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__nand2_1": _logic_module(
+        "sky130_fd_sc_hd__nand2_1",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand2_2": _logic_module(
+        "sky130_fd_sc_hd__nand2_2",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand2_4": _logic_module(
+        "sky130_fd_sc_hd__nand2_4",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand2_8": _logic_module(
+        "sky130_fd_sc_hd__nand2_8",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand2b_1": _logic_module(
+        "sky130_fd_sc_hd__nand2b_1",
+        "High Density",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand2b_2": _logic_module(
+        "sky130_fd_sc_hd__nand2b_2",
+        "High Density",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand2b_4": _logic_module(
+        "sky130_fd_sc_hd__nand2b_4",
+        "High Density",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand3_1": _logic_module(
+        "sky130_fd_sc_hd__nand3_1",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand3_2": _logic_module(
+        "sky130_fd_sc_hd__nand3_2",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand3_4": _logic_module(
+        "sky130_fd_sc_hd__nand3_4",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand3b_1": _logic_module(
+        "sky130_fd_sc_hd__nand3b_1",
+        "High Density",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand3b_2": _logic_module(
+        "sky130_fd_sc_hd__nand3b_2",
+        "High Density",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand3b_4": _logic_module(
+        "sky130_fd_sc_hd__nand3b_4",
+        "High Density",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand4_1": _logic_module(
+        "sky130_fd_sc_hd__nand4_1",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand4_2": _logic_module(
+        "sky130_fd_sc_hd__nand4_2",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand4_4": _logic_module(
+        "sky130_fd_sc_hd__nand4_4",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand4b_1": _logic_module(
+        "sky130_fd_sc_hd__nand4b_1",
+        "High Density",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand4b_2": _logic_module(
+        "sky130_fd_sc_hd__nand4b_2",
+        "High Density",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand4b_4": _logic_module(
+        "sky130_fd_sc_hd__nand4b_4",
+        "High Density",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand4bb_1": _logic_module(
+        "sky130_fd_sc_hd__nand4bb_1",
+        "High Density",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand4bb_2": _logic_module(
+        "sky130_fd_sc_hd__nand4bb_2",
+        "High Density",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nand4bb_4": _logic_module(
+        "sky130_fd_sc_hd__nand4bb_4",
+        "High Density",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor2_1": _logic_module(
+        "sky130_fd_sc_hd__nor2_1",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor2_2": _logic_module(
+        "sky130_fd_sc_hd__nor2_2",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor2_4": _logic_module(
+        "sky130_fd_sc_hd__nor2_4",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor2_8": _logic_module(
+        "sky130_fd_sc_hd__nor2_8",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor2b_1": _logic_module(
+        "sky130_fd_sc_hd__nor2b_1",
+        "High Density",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor2b_2": _logic_module(
+        "sky130_fd_sc_hd__nor2b_2",
+        "High Density",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor2b_4": _logic_module(
+        "sky130_fd_sc_hd__nor2b_4",
+        "High Density",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor3_1": _logic_module(
+        "sky130_fd_sc_hd__nor3_1",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor3_2": _logic_module(
+        "sky130_fd_sc_hd__nor3_2",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor3_4": _logic_module(
+        "sky130_fd_sc_hd__nor3_4",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor3b_1": _logic_module(
+        "sky130_fd_sc_hd__nor3b_1",
+        "High Density",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor3b_2": _logic_module(
+        "sky130_fd_sc_hd__nor3b_2",
+        "High Density",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor3b_4": _logic_module(
+        "sky130_fd_sc_hd__nor3b_4",
+        "High Density",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor4_1": _logic_module(
+        "sky130_fd_sc_hd__nor4_1",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor4_2": _logic_module(
+        "sky130_fd_sc_hd__nor4_2",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor4_4": _logic_module(
+        "sky130_fd_sc_hd__nor4_4",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor4b_1": _logic_module(
+        "sky130_fd_sc_hd__nor4b_1",
+        "High Density",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor4b_2": _logic_module(
+        "sky130_fd_sc_hd__nor4b_2",
+        "High Density",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor4b_4": _logic_module(
+        "sky130_fd_sc_hd__nor4b_4",
+        "High Density",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor4bb_1": _logic_module(
+        "sky130_fd_sc_hd__nor4bb_1",
+        "High Density",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor4bb_2": _logic_module(
+        "sky130_fd_sc_hd__nor4bb_2",
+        "High Density",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__nor4bb_4": _logic_module(
+        "sky130_fd_sc_hd__nor4bb_4",
+        "High Density",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o2bb2a_1": _logic_module(
+        "sky130_fd_sc_hd__o2bb2a_1",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o2bb2a_2": _logic_module(
+        "sky130_fd_sc_hd__o2bb2a_2",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o2bb2a_4": _logic_module(
+        "sky130_fd_sc_hd__o2bb2a_4",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o2bb2ai_1": _logic_module(
+        "sky130_fd_sc_hd__o2bb2ai_1",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o2bb2ai_2": _logic_module(
+        "sky130_fd_sc_hd__o2bb2ai_2",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o2bb2ai_4": _logic_module(
+        "sky130_fd_sc_hd__o2bb2ai_4",
+        "High Density",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o21a_1": _logic_module(
+        "sky130_fd_sc_hd__o21a_1",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o21a_2": _logic_module(
+        "sky130_fd_sc_hd__o21a_2",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o21a_4": _logic_module(
+        "sky130_fd_sc_hd__o21a_4",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o21ai_0": _logic_module(
+        "sky130_fd_sc_hd__o21ai_0",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o21ai_1": _logic_module(
+        "sky130_fd_sc_hd__o21ai_1",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o21ai_2": _logic_module(
+        "sky130_fd_sc_hd__o21ai_2",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o21ai_4": _logic_module(
+        "sky130_fd_sc_hd__o21ai_4",
+        "High Density",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o21ba_1": _logic_module(
+        "sky130_fd_sc_hd__o21ba_1",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o21ba_2": _logic_module(
+        "sky130_fd_sc_hd__o21ba_2",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o21ba_4": _logic_module(
+        "sky130_fd_sc_hd__o21ba_4",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o21bai_1": _logic_module(
+        "sky130_fd_sc_hd__o21bai_1",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o21bai_2": _logic_module(
+        "sky130_fd_sc_hd__o21bai_2",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o21bai_4": _logic_module(
+        "sky130_fd_sc_hd__o21bai_4",
+        "High Density",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o22a_1": _logic_module(
+        "sky130_fd_sc_hd__o22a_1",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o22a_2": _logic_module(
+        "sky130_fd_sc_hd__o22a_2",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o22a_4": _logic_module(
+        "sky130_fd_sc_hd__o22a_4",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o22ai_1": _logic_module(
+        "sky130_fd_sc_hd__o22ai_1",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o22ai_2": _logic_module(
+        "sky130_fd_sc_hd__o22ai_2",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o22ai_4": _logic_module(
+        "sky130_fd_sc_hd__o22ai_4",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o31a_1": _logic_module(
+        "sky130_fd_sc_hd__o31a_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o31a_2": _logic_module(
+        "sky130_fd_sc_hd__o31a_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o31a_4": _logic_module(
+        "sky130_fd_sc_hd__o31a_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o31ai_1": _logic_module(
+        "sky130_fd_sc_hd__o31ai_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o31ai_2": _logic_module(
+        "sky130_fd_sc_hd__o31ai_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o31ai_4": _logic_module(
+        "sky130_fd_sc_hd__o31ai_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o32a_1": _logic_module(
+        "sky130_fd_sc_hd__o32a_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o32a_2": _logic_module(
+        "sky130_fd_sc_hd__o32a_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o32a_4": _logic_module(
+        "sky130_fd_sc_hd__o32a_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o32ai_1": _logic_module(
+        "sky130_fd_sc_hd__o32ai_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o32ai_2": _logic_module(
+        "sky130_fd_sc_hd__o32ai_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o32ai_4": _logic_module(
+        "sky130_fd_sc_hd__o32ai_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o41a_1": _logic_module(
+        "sky130_fd_sc_hd__o41a_1",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o41a_2": _logic_module(
+        "sky130_fd_sc_hd__o41a_2",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o41a_4": _logic_module(
+        "sky130_fd_sc_hd__o41a_4",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o41ai_1": _logic_module(
+        "sky130_fd_sc_hd__o41ai_1",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o41ai_2": _logic_module(
+        "sky130_fd_sc_hd__o41ai_2",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o41ai_4": _logic_module(
+        "sky130_fd_sc_hd__o41ai_4",
+        "High Density",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o211a_1": _logic_module(
+        "sky130_fd_sc_hd__o211a_1",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o211a_2": _logic_module(
+        "sky130_fd_sc_hd__o211a_2",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o211a_4": _logic_module(
+        "sky130_fd_sc_hd__o211a_4",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o211ai_1": _logic_module(
+        "sky130_fd_sc_hd__o211ai_1",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o211ai_2": _logic_module(
+        "sky130_fd_sc_hd__o211ai_2",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o211ai_4": _logic_module(
+        "sky130_fd_sc_hd__o211ai_4",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o221a_1": _logic_module(
+        "sky130_fd_sc_hd__o221a_1",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o221a_2": _logic_module(
+        "sky130_fd_sc_hd__o221a_2",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o221a_4": _logic_module(
+        "sky130_fd_sc_hd__o221a_4",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o221ai_1": _logic_module(
+        "sky130_fd_sc_hd__o221ai_1",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o221ai_2": _logic_module(
+        "sky130_fd_sc_hd__o221ai_2",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o221ai_4": _logic_module(
+        "sky130_fd_sc_hd__o221ai_4",
+        "High Density",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o311a_1": _logic_module(
+        "sky130_fd_sc_hd__o311a_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o311a_2": _logic_module(
+        "sky130_fd_sc_hd__o311a_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o311a_4": _logic_module(
+        "sky130_fd_sc_hd__o311a_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o311ai_0": _logic_module(
+        "sky130_fd_sc_hd__o311ai_0",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o311ai_1": _logic_module(
+        "sky130_fd_sc_hd__o311ai_1",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o311ai_2": _logic_module(
+        "sky130_fd_sc_hd__o311ai_2",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o311ai_4": _logic_module(
+        "sky130_fd_sc_hd__o311ai_4",
+        "High Density",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o2111a_1": _logic_module(
+        "sky130_fd_sc_hd__o2111a_1",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o2111a_2": _logic_module(
+        "sky130_fd_sc_hd__o2111a_2",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o2111a_4": _logic_module(
+        "sky130_fd_sc_hd__o2111a_4",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__o2111ai_1": _logic_module(
+        "sky130_fd_sc_hd__o2111ai_1",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o2111ai_2": _logic_module(
+        "sky130_fd_sc_hd__o2111ai_2",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__o2111ai_4": _logic_module(
+        "sky130_fd_sc_hd__o2111ai_4",
+        "High Density",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__or2_0": _logic_module(
+        "sky130_fd_sc_hd__or2_0",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or2_1": _logic_module(
+        "sky130_fd_sc_hd__or2_1",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or2_2": _logic_module(
+        "sky130_fd_sc_hd__or2_2",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or2_4": _logic_module(
+        "sky130_fd_sc_hd__or2_4",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or2b_1": _logic_module(
+        "sky130_fd_sc_hd__or2b_1",
+        "High Density",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or2b_2": _logic_module(
+        "sky130_fd_sc_hd__or2b_2",
+        "High Density",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or2b_4": _logic_module(
+        "sky130_fd_sc_hd__or2b_4",
+        "High Density",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or3_1": _logic_module(
+        "sky130_fd_sc_hd__or3_1",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or3_2": _logic_module(
+        "sky130_fd_sc_hd__or3_2",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or3_4": _logic_module(
+        "sky130_fd_sc_hd__or3_4",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or3b_1": _logic_module(
+        "sky130_fd_sc_hd__or3b_1",
+        "High Density",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or3b_2": _logic_module(
+        "sky130_fd_sc_hd__or3b_2",
+        "High Density",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or3b_4": _logic_module(
+        "sky130_fd_sc_hd__or3b_4",
+        "High Density",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or4_1": _logic_module(
+        "sky130_fd_sc_hd__or4_1",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or4_2": _logic_module(
+        "sky130_fd_sc_hd__or4_2",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or4_4": _logic_module(
+        "sky130_fd_sc_hd__or4_4",
+        "High Density",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or4b_1": _logic_module(
+        "sky130_fd_sc_hd__or4b_1",
+        "High Density",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or4b_2": _logic_module(
+        "sky130_fd_sc_hd__or4b_2",
+        "High Density",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or4b_4": _logic_module(
+        "sky130_fd_sc_hd__or4b_4",
+        "High Density",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or4bb_1": _logic_module(
+        "sky130_fd_sc_hd__or4bb_1",
+        "High Density",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or4bb_2": _logic_module(
+        "sky130_fd_sc_hd__or4bb_2",
+        "High Density",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__or4bb_4": _logic_module(
+        "sky130_fd_sc_hd__or4bb_4",
+        "High Density",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__probe_p_8": _logic_module(
+        "sky130_fd_sc_hd__probe_p_8",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__probec_p_8": _logic_module(
+        "sky130_fd_sc_hd__probec_p_8",
+        "High Density",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__sdfbbn_1": _logic_module(
+        "sky130_fd_sc_hd__sdfbbn_1",
+        "High Density",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hd__sdfbbn_2": _logic_module(
+        "sky130_fd_sc_hd__sdfbbn_2",
+        "High Density",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hd__sdfbbp_1": _logic_module(
+        "sky130_fd_sc_hd__sdfbbp_1",
+        "High Density",
+        [
+            "CLK",
+            "D",
+            "RESET_B",
+            "SCD",
+            "SCE",
+            "SET_B",
+            "VGND",
+            "VNB",
+            "VPB",
+            "VPWR",
+            "Q",
+        ],
+    ),
+    "sky130_fd_sc_hd__sdfrbp_1": _logic_module(
+        "sky130_fd_sc_hd__sdfrbp_1",
+        "High Density",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__sdfrbp_2": _logic_module(
+        "sky130_fd_sc_hd__sdfrbp_2",
+        "High Density",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__sdfrtn_1": _logic_module(
+        "sky130_fd_sc_hd__sdfrtn_1",
+        "High Density",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sdfrtp_1": _logic_module(
+        "sky130_fd_sc_hd__sdfrtp_1",
+        "High Density",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sdfrtp_2": _logic_module(
+        "sky130_fd_sc_hd__sdfrtp_2",
+        "High Density",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sdfrtp_4": _logic_module(
+        "sky130_fd_sc_hd__sdfrtp_4",
+        "High Density",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sdfsbp_1": _logic_module(
+        "sky130_fd_sc_hd__sdfsbp_1",
+        "High Density",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__sdfsbp_2": _logic_module(
+        "sky130_fd_sc_hd__sdfsbp_2",
+        "High Density",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__sdfstp_1": _logic_module(
+        "sky130_fd_sc_hd__sdfstp_1",
+        "High Density",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sdfstp_2": _logic_module(
+        "sky130_fd_sc_hd__sdfstp_2",
+        "High Density",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sdfstp_4": _logic_module(
+        "sky130_fd_sc_hd__sdfstp_4",
+        "High Density",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sdfxbp_1": _logic_module(
+        "sky130_fd_sc_hd__sdfxbp_1",
+        "High Density",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__sdfxbp_2": _logic_module(
+        "sky130_fd_sc_hd__sdfxbp_2",
+        "High Density",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__sdfxtp_1": _logic_module(
+        "sky130_fd_sc_hd__sdfxtp_1",
+        "High Density",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sdfxtp_2": _logic_module(
+        "sky130_fd_sc_hd__sdfxtp_2",
+        "High Density",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sdfxtp_4": _logic_module(
+        "sky130_fd_sc_hd__sdfxtp_4",
+        "High Density",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sdlclkp_1": _logic_module(
+        "sky130_fd_sc_hd__sdlclkp_1",
+        "High Density",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hd__sdlclkp_2": _logic_module(
+        "sky130_fd_sc_hd__sdlclkp_2",
+        "High Density",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hd__sdlclkp_4": _logic_module(
+        "sky130_fd_sc_hd__sdlclkp_4",
+        "High Density",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hd__sedfxbp_1": _logic_module(
+        "sky130_fd_sc_hd__sedfxbp_1",
+        "High Density",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__sedfxbp_2": _logic_module(
+        "sky130_fd_sc_hd__sedfxbp_2",
+        "High Density",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hd__sedfxtp_1": _logic_module(
+        "sky130_fd_sc_hd__sedfxtp_1",
+        "High Density",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sedfxtp_2": _logic_module(
+        "sky130_fd_sc_hd__sedfxtp_2",
+        "High Density",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__sedfxtp_4": _logic_module(
+        "sky130_fd_sc_hd__sedfxtp_4",
+        "High Density",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hd__tap_1": _logic_module(
+        "sky130_fd_sc_hd__tap_1", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__tap_2": _logic_module(
+        "sky130_fd_sc_hd__tap_2", "High Density", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__tapvgnd2_1": _logic_module(
+        "sky130_fd_sc_hd__tapvgnd2_1", "High Density", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__tapvgnd_1": _logic_module(
+        "sky130_fd_sc_hd__tapvgnd_1", "High Density", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__tapvpwrvgnd_1": _logic_module(
+        "sky130_fd_sc_hd__tapvpwrvgnd_1", "High Density", ["VGND", "VPWR"]
+    ),
+    "sky130_fd_sc_hd__xnor2_1": _logic_module(
+        "sky130_fd_sc_hd__xnor2_1",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__xnor2_2": _logic_module(
+        "sky130_fd_sc_hd__xnor2_2",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__xnor2_4": _logic_module(
+        "sky130_fd_sc_hd__xnor2_4",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hd__xnor3_1": _logic_module(
+        "sky130_fd_sc_hd__xnor3_1",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__xnor3_2": _logic_module(
+        "sky130_fd_sc_hd__xnor3_2",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__xnor3_4": _logic_module(
+        "sky130_fd_sc_hd__xnor3_4",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__xor2_1": _logic_module(
+        "sky130_fd_sc_hd__xor2_1",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__xor2_2": _logic_module(
+        "sky130_fd_sc_hd__xor2_2",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__xor2_4": _logic_module(
+        "sky130_fd_sc_hd__xor2_4",
+        "High Density",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__xor3_1": _logic_module(
+        "sky130_fd_sc_hd__xor3_1",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__xor3_2": _logic_module(
+        "sky130_fd_sc_hd__xor3_2",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hd__xor3_4": _logic_module(
+        "sky130_fd_sc_hd__xor3_4",
+        "High Density",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+}
+
+hdll: Dict[str, h.ExternalModule] = {
+    "sky130_fd_sc_hdll__a2bb2o_1": _logic_module(
+        "sky130_fd_sc_hdll__a2bb2o_1",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a2bb2o_2": _logic_module(
+        "sky130_fd_sc_hdll__a2bb2o_2",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a2bb2o_4": _logic_module(
+        "sky130_fd_sc_hdll__a2bb2o_4",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a2bb2oi_1": _logic_module(
+        "sky130_fd_sc_hdll__a2bb2oi_1",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a2bb2oi_2": _logic_module(
+        "sky130_fd_sc_hdll__a2bb2oi_2",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a2bb2oi_4": _logic_module(
+        "sky130_fd_sc_hdll__a2bb2oi_4",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a21bo_1": _logic_module(
+        "sky130_fd_sc_hdll__a21bo_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a21bo_2": _logic_module(
+        "sky130_fd_sc_hdll__a21bo_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a21bo_4": _logic_module(
+        "sky130_fd_sc_hdll__a21bo_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a21boi_1": _logic_module(
+        "sky130_fd_sc_hdll__a21boi_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a21boi_2": _logic_module(
+        "sky130_fd_sc_hdll__a21boi_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a21boi_4": _logic_module(
+        "sky130_fd_sc_hdll__a21boi_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a21o_1": _logic_module(
+        "sky130_fd_sc_hdll__a21o_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a21o_2": _logic_module(
+        "sky130_fd_sc_hdll__a21o_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a21o_4": _logic_module(
+        "sky130_fd_sc_hdll__a21o_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a21o_6": _logic_module(
+        "sky130_fd_sc_hdll__a21o_6",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a21o_8": _logic_module(
+        "sky130_fd_sc_hdll__a21o_8",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a21oi_1": _logic_module(
+        "sky130_fd_sc_hdll__a21oi_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a21oi_2": _logic_module(
+        "sky130_fd_sc_hdll__a21oi_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a21oi_4": _logic_module(
+        "sky130_fd_sc_hdll__a21oi_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a22o_1": _logic_module(
+        "sky130_fd_sc_hdll__a22o_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a22o_2": _logic_module(
+        "sky130_fd_sc_hdll__a22o_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a22o_4": _logic_module(
+        "sky130_fd_sc_hdll__a22o_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a22oi_1": _logic_module(
+        "sky130_fd_sc_hdll__a22oi_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a22oi_2": _logic_module(
+        "sky130_fd_sc_hdll__a22oi_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a22oi_4": _logic_module(
+        "sky130_fd_sc_hdll__a22oi_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a31o_1": _logic_module(
+        "sky130_fd_sc_hdll__a31o_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a31o_2": _logic_module(
+        "sky130_fd_sc_hdll__a31o_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a31o_4": _logic_module(
+        "sky130_fd_sc_hdll__a31o_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a31oi_1": _logic_module(
+        "sky130_fd_sc_hdll__a31oi_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a31oi_2": _logic_module(
+        "sky130_fd_sc_hdll__a31oi_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a31oi_4": _logic_module(
+        "sky130_fd_sc_hdll__a31oi_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a32o_1": _logic_module(
+        "sky130_fd_sc_hdll__a32o_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a32o_2": _logic_module(
+        "sky130_fd_sc_hdll__a32o_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a32o_4": _logic_module(
+        "sky130_fd_sc_hdll__a32o_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a32oi_1": _logic_module(
+        "sky130_fd_sc_hdll__a32oi_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a32oi_2": _logic_module(
+        "sky130_fd_sc_hdll__a32oi_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a32oi_4": _logic_module(
+        "sky130_fd_sc_hdll__a32oi_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a211o_1": _logic_module(
+        "sky130_fd_sc_hdll__a211o_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a211o_2": _logic_module(
+        "sky130_fd_sc_hdll__a211o_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a211o_4": _logic_module(
+        "sky130_fd_sc_hdll__a211o_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__a211oi_1": _logic_module(
+        "sky130_fd_sc_hdll__a211oi_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a211oi_2": _logic_module(
+        "sky130_fd_sc_hdll__a211oi_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a211oi_4": _logic_module(
+        "sky130_fd_sc_hdll__a211oi_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a221oi_1": _logic_module(
+        "sky130_fd_sc_hdll__a221oi_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a221oi_2": _logic_module(
+        "sky130_fd_sc_hdll__a221oi_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a221oi_4": _logic_module(
+        "sky130_fd_sc_hdll__a221oi_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__a222oi_1": _logic_module(
+        "sky130_fd_sc_hdll__a222oi_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__and2_1": _logic_module(
+        "sky130_fd_sc_hdll__and2_1",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and2_2": _logic_module(
+        "sky130_fd_sc_hdll__and2_2",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and2_4": _logic_module(
+        "sky130_fd_sc_hdll__and2_4",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and2_6": _logic_module(
+        "sky130_fd_sc_hdll__and2_6",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and2_8": _logic_module(
+        "sky130_fd_sc_hdll__and2_8",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and2b_1": _logic_module(
+        "sky130_fd_sc_hdll__and2b_1",
+        "High Density Low Leakage",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and2b_2": _logic_module(
+        "sky130_fd_sc_hdll__and2b_2",
+        "High Density Low Leakage",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and2b_4": _logic_module(
+        "sky130_fd_sc_hdll__and2b_4",
+        "High Density Low Leakage",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and3_1": _logic_module(
+        "sky130_fd_sc_hdll__and3_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and3_2": _logic_module(
+        "sky130_fd_sc_hdll__and3_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and3_4": _logic_module(
+        "sky130_fd_sc_hdll__and3_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and3b_1": _logic_module(
+        "sky130_fd_sc_hdll__and3b_1",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and3b_2": _logic_module(
+        "sky130_fd_sc_hdll__and3b_2",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and3b_4": _logic_module(
+        "sky130_fd_sc_hdll__and3b_4",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and4_1": _logic_module(
+        "sky130_fd_sc_hdll__and4_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and4_2": _logic_module(
+        "sky130_fd_sc_hdll__and4_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and4_4": _logic_module(
+        "sky130_fd_sc_hdll__and4_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and4b_1": _logic_module(
+        "sky130_fd_sc_hdll__and4b_1",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and4b_2": _logic_module(
+        "sky130_fd_sc_hdll__and4b_2",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and4b_4": _logic_module(
+        "sky130_fd_sc_hdll__and4b_4",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and4bb_1": _logic_module(
+        "sky130_fd_sc_hdll__and4bb_1",
+        "High Density Low Leakage",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and4bb_2": _logic_module(
+        "sky130_fd_sc_hdll__and4bb_2",
+        "High Density Low Leakage",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__and4bb_4": _logic_module(
+        "sky130_fd_sc_hdll__and4bb_4",
+        "High Density Low Leakage",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__buf_1": _logic_module(
+        "sky130_fd_sc_hdll__buf_1",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__buf_2": _logic_module(
+        "sky130_fd_sc_hdll__buf_2",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__buf_4": _logic_module(
+        "sky130_fd_sc_hdll__buf_4",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__buf_6": _logic_module(
+        "sky130_fd_sc_hdll__buf_6",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__buf_8": _logic_module(
+        "sky130_fd_sc_hdll__buf_8",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__buf_12": _logic_module(
+        "sky130_fd_sc_hdll__buf_12",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__buf_16": _logic_module(
+        "sky130_fd_sc_hdll__buf_16",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__bufbuf_8": _logic_module(
+        "sky130_fd_sc_hdll__bufbuf_8",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__bufbuf_16": _logic_module(
+        "sky130_fd_sc_hdll__bufbuf_16",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__bufinv_8": _logic_module(
+        "sky130_fd_sc_hdll__bufinv_8",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__bufinv_16": _logic_module(
+        "sky130_fd_sc_hdll__bufinv_16",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__clkbuf_1": _logic_module(
+        "sky130_fd_sc_hdll__clkbuf_1",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__clkbuf_2": _logic_module(
+        "sky130_fd_sc_hdll__clkbuf_2",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__clkbuf_4": _logic_module(
+        "sky130_fd_sc_hdll__clkbuf_4",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__clkbuf_6": _logic_module(
+        "sky130_fd_sc_hdll__clkbuf_6",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__clkbuf_8": _logic_module(
+        "sky130_fd_sc_hdll__clkbuf_8",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__clkbuf_12": _logic_module(
+        "sky130_fd_sc_hdll__clkbuf_12",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__clkbuf_16": _logic_module(
+        "sky130_fd_sc_hdll__clkbuf_16",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__clkinv_1": _logic_module(
+        "sky130_fd_sc_hdll__clkinv_1",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__clkinv_2": _logic_module(
+        "sky130_fd_sc_hdll__clkinv_2",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__clkinv_4": _logic_module(
+        "sky130_fd_sc_hdll__clkinv_4",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__clkinv_8": _logic_module(
+        "sky130_fd_sc_hdll__clkinv_8",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__clkinv_12": _logic_module(
+        "sky130_fd_sc_hdll__clkinv_12",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__clkinv_16": _logic_module(
+        "sky130_fd_sc_hdll__clkinv_16",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__clkinvlp_2": _logic_module(
+        "sky130_fd_sc_hdll__clkinvlp_2",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__clkinvlp_4": _logic_module(
+        "sky130_fd_sc_hdll__clkinvlp_4",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__clkmux2_1": _logic_module(
+        "sky130_fd_sc_hdll__clkmux2_1",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__clkmux2_2": _logic_module(
+        "sky130_fd_sc_hdll__clkmux2_2",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__clkmux2_4": _logic_module(
+        "sky130_fd_sc_hdll__clkmux2_4",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__conb_1": _logic_module(
+        "sky130_fd_sc_hdll__conb_1",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"],
+    ),
+    "sky130_fd_sc_hdll__decap_3": _logic_module(
+        "sky130_fd_sc_hdll__decap_3",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__decap_4": _logic_module(
+        "sky130_fd_sc_hdll__decap_4",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__decap_6": _logic_module(
+        "sky130_fd_sc_hdll__decap_6",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__decap_8": _logic_module(
+        "sky130_fd_sc_hdll__decap_8",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__decap_12": _logic_module(
+        "sky130_fd_sc_hdll__decap_12",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__dfrtp_1": _logic_module(
+        "sky130_fd_sc_hdll__dfrtp_1",
+        "High Density Low Leakage",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dfrtp_2": _logic_module(
+        "sky130_fd_sc_hdll__dfrtp_2",
+        "High Density Low Leakage",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dfrtp_4": _logic_module(
+        "sky130_fd_sc_hdll__dfrtp_4",
+        "High Density Low Leakage",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dfstp_1": _logic_module(
+        "sky130_fd_sc_hdll__dfstp_1",
+        "High Density Low Leakage",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dfstp_2": _logic_module(
+        "sky130_fd_sc_hdll__dfstp_2",
+        "High Density Low Leakage",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dfstp_4": _logic_module(
+        "sky130_fd_sc_hdll__dfstp_4",
+        "High Density Low Leakage",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__diode_2": _logic_module(
+        "sky130_fd_sc_hdll__diode_2",
+        "High Density Low Leakage",
+        ["DIODE", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__diode_4": _logic_module(
+        "sky130_fd_sc_hdll__diode_4",
+        "High Density Low Leakage",
+        ["DIODE", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__diode_6": _logic_module(
+        "sky130_fd_sc_hdll__diode_6",
+        "High Density Low Leakage",
+        ["DIODE", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__diode_8": _logic_module(
+        "sky130_fd_sc_hdll__diode_8",
+        "High Density Low Leakage",
+        ["DIODE", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__dlrtn_1": _logic_module(
+        "sky130_fd_sc_hdll__dlrtn_1",
+        "High Density Low Leakage",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dlrtn_2": _logic_module(
+        "sky130_fd_sc_hdll__dlrtn_2",
+        "High Density Low Leakage",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dlrtn_4": _logic_module(
+        "sky130_fd_sc_hdll__dlrtn_4",
+        "High Density Low Leakage",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dlrtp_1": _logic_module(
+        "sky130_fd_sc_hdll__dlrtp_1",
+        "High Density Low Leakage",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dlrtp_2": _logic_module(
+        "sky130_fd_sc_hdll__dlrtp_2",
+        "High Density Low Leakage",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dlrtp_4": _logic_module(
+        "sky130_fd_sc_hdll__dlrtp_4",
+        "High Density Low Leakage",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dlxtn_1": _logic_module(
+        "sky130_fd_sc_hdll__dlxtn_1",
+        "High Density Low Leakage",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dlxtn_2": _logic_module(
+        "sky130_fd_sc_hdll__dlxtn_2",
+        "High Density Low Leakage",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dlxtn_4": _logic_module(
+        "sky130_fd_sc_hdll__dlxtn_4",
+        "High Density Low Leakage",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__dlygate4sd1_1": _logic_module(
+        "sky130_fd_sc_hdll__dlygate4sd1_1",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__dlygate4sd2_1": _logic_module(
+        "sky130_fd_sc_hdll__dlygate4sd2_1",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__dlygate4sd3_1": _logic_module(
+        "sky130_fd_sc_hdll__dlygate4sd3_1",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__ebufn_1": _logic_module(
+        "sky130_fd_sc_hdll__ebufn_1",
+        "High Density Low Leakage",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__ebufn_2": _logic_module(
+        "sky130_fd_sc_hdll__ebufn_2",
+        "High Density Low Leakage",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__ebufn_4": _logic_module(
+        "sky130_fd_sc_hdll__ebufn_4",
+        "High Density Low Leakage",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__ebufn_8": _logic_module(
+        "sky130_fd_sc_hdll__ebufn_8",
+        "High Density Low Leakage",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__einvn_1": _logic_module(
+        "sky130_fd_sc_hdll__einvn_1",
+        "High Density Low Leakage",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__einvn_2": _logic_module(
+        "sky130_fd_sc_hdll__einvn_2",
+        "High Density Low Leakage",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__einvn_4": _logic_module(
+        "sky130_fd_sc_hdll__einvn_4",
+        "High Density Low Leakage",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__einvn_8": _logic_module(
+        "sky130_fd_sc_hdll__einvn_8",
+        "High Density Low Leakage",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__einvp_1": _logic_module(
+        "sky130_fd_sc_hdll__einvp_1",
+        "High Density Low Leakage",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__einvp_2": _logic_module(
+        "sky130_fd_sc_hdll__einvp_2",
+        "High Density Low Leakage",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__einvp_4": _logic_module(
+        "sky130_fd_sc_hdll__einvp_4",
+        "High Density Low Leakage",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__einvp_8": _logic_module(
+        "sky130_fd_sc_hdll__einvp_8",
+        "High Density Low Leakage",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hdll__fill_1": _logic_module(
+        "sky130_fd_sc_hdll__fill_1",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__fill_2": _logic_module(
+        "sky130_fd_sc_hdll__fill_2",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__fill_4": _logic_module(
+        "sky130_fd_sc_hdll__fill_4",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__fill_8": _logic_module(
+        "sky130_fd_sc_hdll__fill_8",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__inputiso0n_1": _logic_module(
+        "sky130_fd_sc_hdll__inputiso0n_1",
+        "High Density Low Leakage",
+        ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__inputiso0p_1": _logic_module(
+        "sky130_fd_sc_hdll__inputiso0p_1",
+        "High Density Low Leakage",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__inputiso1n_1": _logic_module(
+        "sky130_fd_sc_hdll__inputiso1n_1",
+        "High Density Low Leakage",
+        ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__inputiso1p_1": _logic_module(
+        "sky130_fd_sc_hdll__inputiso1p_1",
+        "High Density Low Leakage",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__inv_1": _logic_module(
+        "sky130_fd_sc_hdll__inv_1",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__inv_2": _logic_module(
+        "sky130_fd_sc_hdll__inv_2",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__inv_4": _logic_module(
+        "sky130_fd_sc_hdll__inv_4",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__inv_6": _logic_module(
+        "sky130_fd_sc_hdll__inv_6",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__inv_8": _logic_module(
+        "sky130_fd_sc_hdll__inv_8",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__inv_12": _logic_module(
+        "sky130_fd_sc_hdll__inv_12",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__inv_16": _logic_module(
+        "sky130_fd_sc_hdll__inv_16",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__isobufsrc_1": _logic_module(
+        "sky130_fd_sc_hdll__isobufsrc_1",
+        "High Density Low Leakage",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__isobufsrc_2": _logic_module(
+        "sky130_fd_sc_hdll__isobufsrc_2",
+        "High Density Low Leakage",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__isobufsrc_4": _logic_module(
+        "sky130_fd_sc_hdll__isobufsrc_4",
+        "High Density Low Leakage",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__isobufsrc_8": _logic_module(
+        "sky130_fd_sc_hdll__isobufsrc_8",
+        "High Density Low Leakage",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__isobufsrc_16": _logic_module(
+        "sky130_fd_sc_hdll__isobufsrc_16",
+        "High Density Low Leakage",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__mux2_1": _logic_module(
+        "sky130_fd_sc_hdll__mux2_1",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__mux2_2": _logic_module(
+        "sky130_fd_sc_hdll__mux2_2",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__mux2_4": _logic_module(
+        "sky130_fd_sc_hdll__mux2_4",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__mux2_8": _logic_module(
+        "sky130_fd_sc_hdll__mux2_8",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__mux2_12": _logic_module(
+        "sky130_fd_sc_hdll__mux2_12",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__mux2_16": _logic_module(
+        "sky130_fd_sc_hdll__mux2_16",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__mux2i_1": _logic_module(
+        "sky130_fd_sc_hdll__mux2i_1",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__mux2i_2": _logic_module(
+        "sky130_fd_sc_hdll__mux2i_2",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__mux2i_4": _logic_module(
+        "sky130_fd_sc_hdll__mux2i_4",
+        "High Density Low Leakage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__muxb4to1_1": _logic_module(
+        "sky130_fd_sc_hdll__muxb4to1_1",
+        "High Density Low Leakage",
+        ["D[3]", "D[2]", "D[1]", "D[0]", "S[3]", "S[2]", "S[1]", "S[0]", "VGND"],
+    ),
+    "sky130_fd_sc_hdll__muxb4to1_2": _logic_module(
+        "sky130_fd_sc_hdll__muxb4to1_2",
+        "High Density Low Leakage",
+        ["D[3]", "D[2]", "D[1]", "D[0]", "S[3]", "S[2]", "S[1]", "S[0]", "VGND"],
+    ),
+    "sky130_fd_sc_hdll__muxb4to1_4": _logic_module(
+        "sky130_fd_sc_hdll__muxb4to1_4",
+        "High Density Low Leakage",
+        ["D[3]", "D[2]", "D[1]", "D[0]", "S[3]", "S[2]", "S[1]", "S[0]", "VGND"],
+    ),
+    "sky130_fd_sc_hdll__muxb8to1_1": _logic_module(
+        "sky130_fd_sc_hdll__muxb8to1_1",
+        "High Density Low Leakage",
+        ["D[7]", "D[6]", "D[5]", "D[4]", "D[3]", "D[2]", "D[1]", "D[0]", "S[7]"],
+    ),
+    "sky130_fd_sc_hdll__muxb8to1_2": _logic_module(
+        "sky130_fd_sc_hdll__muxb8to1_2",
+        "High Density Low Leakage",
+        ["D[7]", "D[6]", "D[5]", "D[4]", "D[3]", "D[2]", "D[1]", "D[0]", "S[7]"],
+    ),
+    "sky130_fd_sc_hdll__muxb8to1_4": _logic_module(
+        "sky130_fd_sc_hdll__muxb8to1_4",
+        "High Density Low Leakage",
+        ["D[7]", "D[6]", "D[5]", "D[4]", "D[3]", "D[2]", "D[1]", "D[0]", "S[7]"],
+    ),
+    "sky130_fd_sc_hdll__muxb16to1_1": _logic_module(
+        "sky130_fd_sc_hdll__muxb16to1_1",
+        "High Density Low Leakage",
+        ["D[15]", "D[14]", "D[13]", "D[12]", "D[11]", "D[10]", "D[9]", "D[8]"],
+    ),
+    "sky130_fd_sc_hdll__muxb16to1_2": _logic_module(
+        "sky130_fd_sc_hdll__muxb16to1_2",
+        "High Density Low Leakage",
+        ["D[15]", "D[14]", "D[13]", "D[12]", "D[11]", "D[10]", "D[9]", "D[8]"],
+    ),
+    "sky130_fd_sc_hdll__muxb16to1_4": _logic_module(
+        "sky130_fd_sc_hdll__muxb16to1_4",
+        "High Density Low Leakage",
+        ["D[15]", "D[14]", "D[13]", "D[12]", "D[11]", "D[10]", "D[9]", "D[8]"],
+    ),
+    "sky130_fd_sc_hdll__nand2_1": _logic_module(
+        "sky130_fd_sc_hdll__nand2_1",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand2_2": _logic_module(
+        "sky130_fd_sc_hdll__nand2_2",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand2_4": _logic_module(
+        "sky130_fd_sc_hdll__nand2_4",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand2_6": _logic_module(
+        "sky130_fd_sc_hdll__nand2_6",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand2_8": _logic_module(
+        "sky130_fd_sc_hdll__nand2_8",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand2_12": _logic_module(
+        "sky130_fd_sc_hdll__nand2_12",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand2_16": _logic_module(
+        "sky130_fd_sc_hdll__nand2_16",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand2b_1": _logic_module(
+        "sky130_fd_sc_hdll__nand2b_1",
+        "High Density Low Leakage",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand2b_2": _logic_module(
+        "sky130_fd_sc_hdll__nand2b_2",
+        "High Density Low Leakage",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand2b_4": _logic_module(
+        "sky130_fd_sc_hdll__nand2b_4",
+        "High Density Low Leakage",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand3_1": _logic_module(
+        "sky130_fd_sc_hdll__nand3_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand3_2": _logic_module(
+        "sky130_fd_sc_hdll__nand3_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand3_4": _logic_module(
+        "sky130_fd_sc_hdll__nand3_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand3b_1": _logic_module(
+        "sky130_fd_sc_hdll__nand3b_1",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand3b_2": _logic_module(
+        "sky130_fd_sc_hdll__nand3b_2",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand3b_4": _logic_module(
+        "sky130_fd_sc_hdll__nand3b_4",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand4_1": _logic_module(
+        "sky130_fd_sc_hdll__nand4_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand4_2": _logic_module(
+        "sky130_fd_sc_hdll__nand4_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand4_4": _logic_module(
+        "sky130_fd_sc_hdll__nand4_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand4b_1": _logic_module(
+        "sky130_fd_sc_hdll__nand4b_1",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand4b_2": _logic_module(
+        "sky130_fd_sc_hdll__nand4b_2",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand4b_4": _logic_module(
+        "sky130_fd_sc_hdll__nand4b_4",
+        "High Density Low Leakage",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand4bb_1": _logic_module(
+        "sky130_fd_sc_hdll__nand4bb_1",
+        "High Density Low Leakage",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand4bb_2": _logic_module(
+        "sky130_fd_sc_hdll__nand4bb_2",
+        "High Density Low Leakage",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nand4bb_4": _logic_module(
+        "sky130_fd_sc_hdll__nand4bb_4",
+        "High Density Low Leakage",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor2_1": _logic_module(
+        "sky130_fd_sc_hdll__nor2_1",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor2_2": _logic_module(
+        "sky130_fd_sc_hdll__nor2_2",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor2_4": _logic_module(
+        "sky130_fd_sc_hdll__nor2_4",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor2_8": _logic_module(
+        "sky130_fd_sc_hdll__nor2_8",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor2b_1": _logic_module(
+        "sky130_fd_sc_hdll__nor2b_1",
+        "High Density Low Leakage",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor2b_2": _logic_module(
+        "sky130_fd_sc_hdll__nor2b_2",
+        "High Density Low Leakage",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor2b_4": _logic_module(
+        "sky130_fd_sc_hdll__nor2b_4",
+        "High Density Low Leakage",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor3_1": _logic_module(
+        "sky130_fd_sc_hdll__nor3_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor3_2": _logic_module(
+        "sky130_fd_sc_hdll__nor3_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor3_4": _logic_module(
+        "sky130_fd_sc_hdll__nor3_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor3b_1": _logic_module(
+        "sky130_fd_sc_hdll__nor3b_1",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor3b_2": _logic_module(
+        "sky130_fd_sc_hdll__nor3b_2",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor3b_4": _logic_module(
+        "sky130_fd_sc_hdll__nor3b_4",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4_1": _logic_module(
+        "sky130_fd_sc_hdll__nor4_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4_2": _logic_module(
+        "sky130_fd_sc_hdll__nor4_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4_4": _logic_module(
+        "sky130_fd_sc_hdll__nor4_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4_6": _logic_module(
+        "sky130_fd_sc_hdll__nor4_6",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4_8": _logic_module(
+        "sky130_fd_sc_hdll__nor4_8",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4b_1": _logic_module(
+        "sky130_fd_sc_hdll__nor4b_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4b_2": _logic_module(
+        "sky130_fd_sc_hdll__nor4b_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4b_4": _logic_module(
+        "sky130_fd_sc_hdll__nor4b_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4bb_1": _logic_module(
+        "sky130_fd_sc_hdll__nor4bb_1",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4bb_2": _logic_module(
+        "sky130_fd_sc_hdll__nor4bb_2",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__nor4bb_4": _logic_module(
+        "sky130_fd_sc_hdll__nor4bb_4",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o2bb2a_1": _logic_module(
+        "sky130_fd_sc_hdll__o2bb2a_1",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o2bb2a_2": _logic_module(
+        "sky130_fd_sc_hdll__o2bb2a_2",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o2bb2a_4": _logic_module(
+        "sky130_fd_sc_hdll__o2bb2a_4",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o2bb2ai_1": _logic_module(
+        "sky130_fd_sc_hdll__o2bb2ai_1",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o2bb2ai_2": _logic_module(
+        "sky130_fd_sc_hdll__o2bb2ai_2",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o2bb2ai_4": _logic_module(
+        "sky130_fd_sc_hdll__o2bb2ai_4",
+        "High Density Low Leakage",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o21a_1": _logic_module(
+        "sky130_fd_sc_hdll__o21a_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o21a_2": _logic_module(
+        "sky130_fd_sc_hdll__o21a_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o21a_4": _logic_module(
+        "sky130_fd_sc_hdll__o21a_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o21ai_1": _logic_module(
+        "sky130_fd_sc_hdll__o21ai_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o21ai_2": _logic_module(
+        "sky130_fd_sc_hdll__o21ai_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o21ai_4": _logic_module(
+        "sky130_fd_sc_hdll__o21ai_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o21ba_1": _logic_module(
+        "sky130_fd_sc_hdll__o21ba_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o21ba_2": _logic_module(
+        "sky130_fd_sc_hdll__o21ba_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o21ba_4": _logic_module(
+        "sky130_fd_sc_hdll__o21ba_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o21bai_1": _logic_module(
+        "sky130_fd_sc_hdll__o21bai_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o21bai_2": _logic_module(
+        "sky130_fd_sc_hdll__o21bai_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o21bai_4": _logic_module(
+        "sky130_fd_sc_hdll__o21bai_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o22a_1": _logic_module(
+        "sky130_fd_sc_hdll__o22a_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o22a_2": _logic_module(
+        "sky130_fd_sc_hdll__o22a_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o22a_4": _logic_module(
+        "sky130_fd_sc_hdll__o22a_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o22ai_1": _logic_module(
+        "sky130_fd_sc_hdll__o22ai_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o22ai_2": _logic_module(
+        "sky130_fd_sc_hdll__o22ai_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o22ai_4": _logic_module(
+        "sky130_fd_sc_hdll__o22ai_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o31ai_1": _logic_module(
+        "sky130_fd_sc_hdll__o31ai_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o31ai_2": _logic_module(
+        "sky130_fd_sc_hdll__o31ai_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o31ai_4": _logic_module(
+        "sky130_fd_sc_hdll__o31ai_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o32ai_1": _logic_module(
+        "sky130_fd_sc_hdll__o32ai_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o32ai_2": _logic_module(
+        "sky130_fd_sc_hdll__o32ai_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o32ai_4": _logic_module(
+        "sky130_fd_sc_hdll__o32ai_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o211a_1": _logic_module(
+        "sky130_fd_sc_hdll__o211a_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o211a_2": _logic_module(
+        "sky130_fd_sc_hdll__o211a_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o211a_4": _logic_module(
+        "sky130_fd_sc_hdll__o211a_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o211ai_1": _logic_module(
+        "sky130_fd_sc_hdll__o211ai_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o211ai_2": _logic_module(
+        "sky130_fd_sc_hdll__o211ai_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o211ai_4": _logic_module(
+        "sky130_fd_sc_hdll__o211ai_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o221a_1": _logic_module(
+        "sky130_fd_sc_hdll__o221a_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o221a_2": _logic_module(
+        "sky130_fd_sc_hdll__o221a_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o221a_4": _logic_module(
+        "sky130_fd_sc_hdll__o221a_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__o221ai_1": _logic_module(
+        "sky130_fd_sc_hdll__o221ai_1",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o221ai_2": _logic_module(
+        "sky130_fd_sc_hdll__o221ai_2",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__o221ai_4": _logic_module(
+        "sky130_fd_sc_hdll__o221ai_4",
+        "High Density Low Leakage",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__or2_1": _logic_module(
+        "sky130_fd_sc_hdll__or2_1",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or2_2": _logic_module(
+        "sky130_fd_sc_hdll__or2_2",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or2_4": _logic_module(
+        "sky130_fd_sc_hdll__or2_4",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or2_6": _logic_module(
+        "sky130_fd_sc_hdll__or2_6",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or2_8": _logic_module(
+        "sky130_fd_sc_hdll__or2_8",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or2b_1": _logic_module(
+        "sky130_fd_sc_hdll__or2b_1",
+        "High Density Low Leakage",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or2b_2": _logic_module(
+        "sky130_fd_sc_hdll__or2b_2",
+        "High Density Low Leakage",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or2b_4": _logic_module(
+        "sky130_fd_sc_hdll__or2b_4",
+        "High Density Low Leakage",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or3_1": _logic_module(
+        "sky130_fd_sc_hdll__or3_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or3_2": _logic_module(
+        "sky130_fd_sc_hdll__or3_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or3_4": _logic_module(
+        "sky130_fd_sc_hdll__or3_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or3b_1": _logic_module(
+        "sky130_fd_sc_hdll__or3b_1",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or3b_2": _logic_module(
+        "sky130_fd_sc_hdll__or3b_2",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or3b_4": _logic_module(
+        "sky130_fd_sc_hdll__or3b_4",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or4_1": _logic_module(
+        "sky130_fd_sc_hdll__or4_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or4_2": _logic_module(
+        "sky130_fd_sc_hdll__or4_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or4_4": _logic_module(
+        "sky130_fd_sc_hdll__or4_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or4b_1": _logic_module(
+        "sky130_fd_sc_hdll__or4b_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or4b_2": _logic_module(
+        "sky130_fd_sc_hdll__or4b_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or4b_4": _logic_module(
+        "sky130_fd_sc_hdll__or4b_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or4bb_1": _logic_module(
+        "sky130_fd_sc_hdll__or4bb_1",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or4bb_2": _logic_module(
+        "sky130_fd_sc_hdll__or4bb_2",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__or4bb_4": _logic_module(
+        "sky130_fd_sc_hdll__or4bb_4",
+        "High Density Low Leakage",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__probe_p_8": _logic_module(
+        "sky130_fd_sc_hdll__probe_p_8",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__probec_p_8": _logic_module(
+        "sky130_fd_sc_hdll__probec_p_8",
+        "High Density Low Leakage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__sdfbbp_1": _logic_module(
+        "sky130_fd_sc_hdll__sdfbbp_1",
+        "High Density Low Leakage",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__sdfrbp_1": _logic_module(
+        "sky130_fd_sc_hdll__sdfrbp_1",
+        "High Density Low Leakage",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hdll__sdfrbp_2": _logic_module(
+        "sky130_fd_sc_hdll__sdfrbp_2",
+        "High Density Low Leakage",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hdll__sdfrtn_1": _logic_module(
+        "sky130_fd_sc_hdll__sdfrtn_1",
+        "High Density Low Leakage",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__sdfrtp_1": _logic_module(
+        "sky130_fd_sc_hdll__sdfrtp_1",
+        "High Density Low Leakage",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__sdfrtp_2": _logic_module(
+        "sky130_fd_sc_hdll__sdfrtp_2",
+        "High Density Low Leakage",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__sdfrtp_4": _logic_module(
+        "sky130_fd_sc_hdll__sdfrtp_4",
+        "High Density Low Leakage",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__sdfsbp_1": _logic_module(
+        "sky130_fd_sc_hdll__sdfsbp_1",
+        "High Density Low Leakage",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hdll__sdfsbp_2": _logic_module(
+        "sky130_fd_sc_hdll__sdfsbp_2",
+        "High Density Low Leakage",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hdll__sdfstp_1": _logic_module(
+        "sky130_fd_sc_hdll__sdfstp_1",
+        "High Density Low Leakage",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__sdfstp_2": _logic_module(
+        "sky130_fd_sc_hdll__sdfstp_2",
+        "High Density Low Leakage",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__sdfstp_4": _logic_module(
+        "sky130_fd_sc_hdll__sdfstp_4",
+        "High Density Low Leakage",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__sdfxbp_1": _logic_module(
+        "sky130_fd_sc_hdll__sdfxbp_1",
+        "High Density Low Leakage",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hdll__sdfxbp_2": _logic_module(
+        "sky130_fd_sc_hdll__sdfxbp_2",
+        "High Density Low Leakage",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hdll__sdfxtp_1": _logic_module(
+        "sky130_fd_sc_hdll__sdfxtp_1",
+        "High Density Low Leakage",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__sdfxtp_2": _logic_module(
+        "sky130_fd_sc_hdll__sdfxtp_2",
+        "High Density Low Leakage",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__sdfxtp_4": _logic_module(
+        "sky130_fd_sc_hdll__sdfxtp_4",
+        "High Density Low Leakage",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hdll__sdlclkp_1": _logic_module(
+        "sky130_fd_sc_hdll__sdlclkp_1",
+        "High Density Low Leakage",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hdll__sdlclkp_2": _logic_module(
+        "sky130_fd_sc_hdll__sdlclkp_2",
+        "High Density Low Leakage",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hdll__sdlclkp_4": _logic_module(
+        "sky130_fd_sc_hdll__sdlclkp_4",
+        "High Density Low Leakage",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hdll__sedfxbp_1": _logic_module(
+        "sky130_fd_sc_hdll__sedfxbp_1",
+        "High Density Low Leakage",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hdll__sedfxbp_2": _logic_module(
+        "sky130_fd_sc_hdll__sedfxbp_2",
+        "High Density Low Leakage",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hdll__tap": _logic_module(
+        "sky130_fd_sc_hdll__tap", "High Density Low Leakage", ["VGND", "VPWR"]
+    ),
+    "sky130_fd_sc_hdll__tap_1": _logic_module(
+        "sky130_fd_sc_hdll__tap_1",
+        "High Density Low Leakage",
+        ["VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__tapvgnd2_1": _logic_module(
+        "sky130_fd_sc_hdll__tapvgnd2_1",
+        "High Density Low Leakage",
+        ["VGND", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__tapvgnd_1": _logic_module(
+        "sky130_fd_sc_hdll__tapvgnd_1",
+        "High Density Low Leakage",
+        ["VGND", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hdll__tapvpwrvgnd_1": _logic_module(
+        "sky130_fd_sc_hdll__tapvpwrvgnd_1", "High Density Low Leakage", ["VGND", "VPWR"]
+    ),
+    "sky130_fd_sc_hdll__xnor2_1": _logic_module(
+        "sky130_fd_sc_hdll__xnor2_1",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__xnor2_2": _logic_module(
+        "sky130_fd_sc_hdll__xnor2_2",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__xnor2_4": _logic_module(
+        "sky130_fd_sc_hdll__xnor2_4",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hdll__xnor3_1": _logic_module(
+        "sky130_fd_sc_hdll__xnor3_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__xnor3_2": _logic_module(
+        "sky130_fd_sc_hdll__xnor3_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__xnor3_4": _logic_module(
+        "sky130_fd_sc_hdll__xnor3_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__xor2_1": _logic_module(
+        "sky130_fd_sc_hdll__xor2_1",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__xor2_2": _logic_module(
+        "sky130_fd_sc_hdll__xor2_2",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__xor2_4": _logic_module(
+        "sky130_fd_sc_hdll__xor2_4",
+        "High Density Low Leakage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__xor3_1": _logic_module(
+        "sky130_fd_sc_hdll__xor3_1",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__xor3_2": _logic_module(
+        "sky130_fd_sc_hdll__xor3_2",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hdll__xor3_4": _logic_module(
+        "sky130_fd_sc_hdll__xor3_4",
+        "High Density Low Leakage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+}
+
+hs: Dict[str, h.ExternalModule] = {
+    "sky130_fd_sc_hs__a2bb2o_1": _logic_module(
+        "sky130_fd_sc_hs__a2bb2o_1",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a2bb2o_2": _logic_module(
+        "sky130_fd_sc_hs__a2bb2o_2",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a2bb2o_4": _logic_module(
+        "sky130_fd_sc_hs__a2bb2o_4",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a2bb2oi_1": _logic_module(
+        "sky130_fd_sc_hs__a2bb2oi_1",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a2bb2oi_2": _logic_module(
+        "sky130_fd_sc_hs__a2bb2oi_2",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a2bb2oi_4": _logic_module(
+        "sky130_fd_sc_hs__a2bb2oi_4",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a21bo_1": _logic_module(
+        "sky130_fd_sc_hs__a21bo_1",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a21bo_2": _logic_module(
+        "sky130_fd_sc_hs__a21bo_2",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a21bo_4": _logic_module(
+        "sky130_fd_sc_hs__a21bo_4",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a21boi_1": _logic_module(
+        "sky130_fd_sc_hs__a21boi_1",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a21boi_2": _logic_module(
+        "sky130_fd_sc_hs__a21boi_2",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a21boi_4": _logic_module(
+        "sky130_fd_sc_hs__a21boi_4",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a21o_1": _logic_module(
+        "sky130_fd_sc_hs__a21o_1",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a21o_2": _logic_module(
+        "sky130_fd_sc_hs__a21o_2",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a21o_4": _logic_module(
+        "sky130_fd_sc_hs__a21o_4",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a21oi_1": _logic_module(
+        "sky130_fd_sc_hs__a21oi_1",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a21oi_2": _logic_module(
+        "sky130_fd_sc_hs__a21oi_2",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a21oi_4": _logic_module(
+        "sky130_fd_sc_hs__a21oi_4",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a22o_1": _logic_module(
+        "sky130_fd_sc_hs__a22o_1",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a22o_2": _logic_module(
+        "sky130_fd_sc_hs__a22o_2",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a22o_4": _logic_module(
+        "sky130_fd_sc_hs__a22o_4",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a22oi_1": _logic_module(
+        "sky130_fd_sc_hs__a22oi_1",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a22oi_2": _logic_module(
+        "sky130_fd_sc_hs__a22oi_2",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a22oi_4": _logic_module(
+        "sky130_fd_sc_hs__a22oi_4",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a31o_1": _logic_module(
+        "sky130_fd_sc_hs__a31o_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a31o_2": _logic_module(
+        "sky130_fd_sc_hs__a31o_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a31o_4": _logic_module(
+        "sky130_fd_sc_hs__a31o_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a31oi_1": _logic_module(
+        "sky130_fd_sc_hs__a31oi_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a31oi_2": _logic_module(
+        "sky130_fd_sc_hs__a31oi_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a31oi_4": _logic_module(
+        "sky130_fd_sc_hs__a31oi_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a32o_1": _logic_module(
+        "sky130_fd_sc_hs__a32o_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a32o_2": _logic_module(
+        "sky130_fd_sc_hs__a32o_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a32o_4": _logic_module(
+        "sky130_fd_sc_hs__a32o_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a32oi_1": _logic_module(
+        "sky130_fd_sc_hs__a32oi_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a32oi_2": _logic_module(
+        "sky130_fd_sc_hs__a32oi_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a32oi_4": _logic_module(
+        "sky130_fd_sc_hs__a32oi_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a41o_1": _logic_module(
+        "sky130_fd_sc_hs__a41o_1",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a41o_2": _logic_module(
+        "sky130_fd_sc_hs__a41o_2",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a41o_4": _logic_module(
+        "sky130_fd_sc_hs__a41o_4",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a41oi_1": _logic_module(
+        "sky130_fd_sc_hs__a41oi_1",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a41oi_2": _logic_module(
+        "sky130_fd_sc_hs__a41oi_2",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a41oi_4": _logic_module(
+        "sky130_fd_sc_hs__a41oi_4",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a211o_1": _logic_module(
+        "sky130_fd_sc_hs__a211o_1",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a211o_2": _logic_module(
+        "sky130_fd_sc_hs__a211o_2",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a211o_4": _logic_module(
+        "sky130_fd_sc_hs__a211o_4",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a211oi_1": _logic_module(
+        "sky130_fd_sc_hs__a211oi_1",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a211oi_2": _logic_module(
+        "sky130_fd_sc_hs__a211oi_2",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a211oi_4": _logic_module(
+        "sky130_fd_sc_hs__a211oi_4",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a221o_1": _logic_module(
+        "sky130_fd_sc_hs__a221o_1",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a221o_2": _logic_module(
+        "sky130_fd_sc_hs__a221o_2",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a221o_4": _logic_module(
+        "sky130_fd_sc_hs__a221o_4",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a221oi_1": _logic_module(
+        "sky130_fd_sc_hs__a221oi_1",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a221oi_2": _logic_module(
+        "sky130_fd_sc_hs__a221oi_2",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a221oi_4": _logic_module(
+        "sky130_fd_sc_hs__a221oi_4",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a222o_1": _logic_module(
+        "sky130_fd_sc_hs__a222o_1",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a222o_2": _logic_module(
+        "sky130_fd_sc_hs__a222o_2",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a222oi_1": _logic_module(
+        "sky130_fd_sc_hs__a222oi_1",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a222oi_2": _logic_module(
+        "sky130_fd_sc_hs__a222oi_2",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a311o_1": _logic_module(
+        "sky130_fd_sc_hs__a311o_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a311o_2": _logic_module(
+        "sky130_fd_sc_hs__a311o_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a311o_4": _logic_module(
+        "sky130_fd_sc_hs__a311o_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a311oi_1": _logic_module(
+        "sky130_fd_sc_hs__a311oi_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a311oi_2": _logic_module(
+        "sky130_fd_sc_hs__a311oi_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a311oi_4": _logic_module(
+        "sky130_fd_sc_hs__a311oi_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a2111o_1": _logic_module(
+        "sky130_fd_sc_hs__a2111o_1",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a2111o_2": _logic_module(
+        "sky130_fd_sc_hs__a2111o_2",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a2111o_4": _logic_module(
+        "sky130_fd_sc_hs__a2111o_4",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__a2111oi_1": _logic_module(
+        "sky130_fd_sc_hs__a2111oi_1",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a2111oi_2": _logic_module(
+        "sky130_fd_sc_hs__a2111oi_2",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__a2111oi_4": _logic_module(
+        "sky130_fd_sc_hs__a2111oi_4",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__and2_1": _logic_module(
+        "sky130_fd_sc_hs__and2_1",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and2_2": _logic_module(
+        "sky130_fd_sc_hs__and2_2",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and2_4": _logic_module(
+        "sky130_fd_sc_hs__and2_4",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and2b_1": _logic_module(
+        "sky130_fd_sc_hs__and2b_1",
+        "High Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and2b_2": _logic_module(
+        "sky130_fd_sc_hs__and2b_2",
+        "High Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and2b_4": _logic_module(
+        "sky130_fd_sc_hs__and2b_4",
+        "High Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and3_1": _logic_module(
+        "sky130_fd_sc_hs__and3_1",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and3_2": _logic_module(
+        "sky130_fd_sc_hs__and3_2",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and3_4": _logic_module(
+        "sky130_fd_sc_hs__and3_4",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and3b_1": _logic_module(
+        "sky130_fd_sc_hs__and3b_1",
+        "High Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and3b_2": _logic_module(
+        "sky130_fd_sc_hs__and3b_2",
+        "High Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and3b_4": _logic_module(
+        "sky130_fd_sc_hs__and3b_4",
+        "High Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and4_1": _logic_module(
+        "sky130_fd_sc_hs__and4_1",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and4_2": _logic_module(
+        "sky130_fd_sc_hs__and4_2",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and4_4": _logic_module(
+        "sky130_fd_sc_hs__and4_4",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and4b_1": _logic_module(
+        "sky130_fd_sc_hs__and4b_1",
+        "High Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and4b_2": _logic_module(
+        "sky130_fd_sc_hs__and4b_2",
+        "High Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and4b_4": _logic_module(
+        "sky130_fd_sc_hs__and4b_4",
+        "High Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and4bb_1": _logic_module(
+        "sky130_fd_sc_hs__and4bb_1",
+        "High Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and4bb_2": _logic_module(
+        "sky130_fd_sc_hs__and4bb_2",
+        "High Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__and4bb_4": _logic_module(
+        "sky130_fd_sc_hs__and4bb_4",
+        "High Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__buf_1": _logic_module(
+        "sky130_fd_sc_hs__buf_1", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_hs__buf_2": _logic_module(
+        "sky130_fd_sc_hs__buf_2", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_hs__buf_4": _logic_module(
+        "sky130_fd_sc_hs__buf_4", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_hs__buf_8": _logic_module(
+        "sky130_fd_sc_hs__buf_8", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_hs__buf_16": _logic_module(
+        "sky130_fd_sc_hs__buf_16",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__bufbuf_8": _logic_module(
+        "sky130_fd_sc_hs__bufbuf_8",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__bufbuf_16": _logic_module(
+        "sky130_fd_sc_hs__bufbuf_16",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__bufinv_8": _logic_module(
+        "sky130_fd_sc_hs__bufinv_8",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__bufinv_16": _logic_module(
+        "sky130_fd_sc_hs__bufinv_16",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkbuf_1": _logic_module(
+        "sky130_fd_sc_hs__clkbuf_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__clkbuf_2": _logic_module(
+        "sky130_fd_sc_hs__clkbuf_2",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__clkbuf_4": _logic_module(
+        "sky130_fd_sc_hs__clkbuf_4",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__clkbuf_8": _logic_module(
+        "sky130_fd_sc_hs__clkbuf_8",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__clkbuf_16": _logic_module(
+        "sky130_fd_sc_hs__clkbuf_16",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__clkdlyinv3sd1_1": _logic_module(
+        "sky130_fd_sc_hs__clkdlyinv3sd1_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkdlyinv3sd2_1": _logic_module(
+        "sky130_fd_sc_hs__clkdlyinv3sd2_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkdlyinv3sd3_1": _logic_module(
+        "sky130_fd_sc_hs__clkdlyinv3sd3_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkdlyinv5sd1_1": _logic_module(
+        "sky130_fd_sc_hs__clkdlyinv5sd1_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkdlyinv5sd2_1": _logic_module(
+        "sky130_fd_sc_hs__clkdlyinv5sd2_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkdlyinv5sd3_1": _logic_module(
+        "sky130_fd_sc_hs__clkdlyinv5sd3_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkinv_1": _logic_module(
+        "sky130_fd_sc_hs__clkinv_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkinv_2": _logic_module(
+        "sky130_fd_sc_hs__clkinv_2",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkinv_4": _logic_module(
+        "sky130_fd_sc_hs__clkinv_4",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkinv_8": _logic_module(
+        "sky130_fd_sc_hs__clkinv_8",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__clkinv_16": _logic_module(
+        "sky130_fd_sc_hs__clkinv_16",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__conb_1": _logic_module(
+        "sky130_fd_sc_hs__conb_1",
+        "High Speed",
+        ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"],
+    ),
+    "sky130_fd_sc_hs__decap_4": _logic_module(
+        "sky130_fd_sc_hs__decap_4", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__decap_8": _logic_module(
+        "sky130_fd_sc_hs__decap_8", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__dfbbn_1": _logic_module(
+        "sky130_fd_sc_hs__dfbbn_1",
+        "High Speed",
+        ["CLK_N", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dfbbn_2": _logic_module(
+        "sky130_fd_sc_hs__dfbbn_2",
+        "High Speed",
+        ["CLK_N", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dfbbp_1": _logic_module(
+        "sky130_fd_sc_hs__dfbbp_1",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dfrbp_1": _logic_module(
+        "sky130_fd_sc_hs__dfrbp_1",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dfrbp_2": _logic_module(
+        "sky130_fd_sc_hs__dfrbp_2",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dfrtn_1": _logic_module(
+        "sky130_fd_sc_hs__dfrtn_1",
+        "High Speed",
+        ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dfrtp_1": _logic_module(
+        "sky130_fd_sc_hs__dfrtp_1",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dfrtp_2": _logic_module(
+        "sky130_fd_sc_hs__dfrtp_2",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dfrtp_4": _logic_module(
+        "sky130_fd_sc_hs__dfrtp_4",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dfsbp_1": _logic_module(
+        "sky130_fd_sc_hs__dfsbp_1",
+        "High Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dfsbp_2": _logic_module(
+        "sky130_fd_sc_hs__dfsbp_2",
+        "High Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dfstp_1": _logic_module(
+        "sky130_fd_sc_hs__dfstp_1",
+        "High Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dfstp_2": _logic_module(
+        "sky130_fd_sc_hs__dfstp_2",
+        "High Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dfstp_4": _logic_module(
+        "sky130_fd_sc_hs__dfstp_4",
+        "High Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dfxbp_1": _logic_module(
+        "sky130_fd_sc_hs__dfxbp_1",
+        "High Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dfxbp_2": _logic_module(
+        "sky130_fd_sc_hs__dfxbp_2",
+        "High Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dfxtp_1": _logic_module(
+        "sky130_fd_sc_hs__dfxtp_1",
+        "High Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dfxtp_2": _logic_module(
+        "sky130_fd_sc_hs__dfxtp_2",
+        "High Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dfxtp_4": _logic_module(
+        "sky130_fd_sc_hs__dfxtp_4",
+        "High Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__diode_2": _logic_module(
+        "sky130_fd_sc_hs__diode_2",
+        "High Speed",
+        ["DIODE", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hs__dlclkp_1": _logic_module(
+        "sky130_fd_sc_hs__dlclkp_1",
+        "High Speed",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hs__dlclkp_2": _logic_module(
+        "sky130_fd_sc_hs__dlclkp_2",
+        "High Speed",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hs__dlclkp_4": _logic_module(
+        "sky130_fd_sc_hs__dlclkp_4",
+        "High Speed",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hs__dlrbn_1": _logic_module(
+        "sky130_fd_sc_hs__dlrbn_1",
+        "High Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dlrbn_2": _logic_module(
+        "sky130_fd_sc_hs__dlrbn_2",
+        "High Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dlrbp_1": _logic_module(
+        "sky130_fd_sc_hs__dlrbp_1",
+        "High Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dlrbp_2": _logic_module(
+        "sky130_fd_sc_hs__dlrbp_2",
+        "High Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dlrtn_1": _logic_module(
+        "sky130_fd_sc_hs__dlrtn_1",
+        "High Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dlrtn_2": _logic_module(
+        "sky130_fd_sc_hs__dlrtn_2",
+        "High Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dlrtn_4": _logic_module(
+        "sky130_fd_sc_hs__dlrtn_4",
+        "High Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dlrtp_1": _logic_module(
+        "sky130_fd_sc_hs__dlrtp_1",
+        "High Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dlrtp_2": _logic_module(
+        "sky130_fd_sc_hs__dlrtp_2",
+        "High Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dlrtp_4": _logic_module(
+        "sky130_fd_sc_hs__dlrtp_4",
+        "High Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dlxbn_1": _logic_module(
+        "sky130_fd_sc_hs__dlxbn_1",
+        "High Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dlxbn_2": _logic_module(
+        "sky130_fd_sc_hs__dlxbn_2",
+        "High Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dlxbp_1": _logic_module(
+        "sky130_fd_sc_hs__dlxbp_1",
+        "High Speed",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__dlxtn_1": _logic_module(
+        "sky130_fd_sc_hs__dlxtn_1",
+        "High Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dlxtn_2": _logic_module(
+        "sky130_fd_sc_hs__dlxtn_2",
+        "High Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dlxtn_4": _logic_module(
+        "sky130_fd_sc_hs__dlxtn_4",
+        "High Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dlxtp_1": _logic_module(
+        "sky130_fd_sc_hs__dlxtp_1",
+        "High Speed",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__dlygate4sd1_1": _logic_module(
+        "sky130_fd_sc_hs__dlygate4sd1_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__dlygate4sd2_1": _logic_module(
+        "sky130_fd_sc_hs__dlygate4sd2_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__dlygate4sd3_1": _logic_module(
+        "sky130_fd_sc_hs__dlygate4sd3_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__dlymetal6s2s_1": _logic_module(
+        "sky130_fd_sc_hs__dlymetal6s2s_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__dlymetal6s4s_1": _logic_module(
+        "sky130_fd_sc_hs__dlymetal6s4s_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__dlymetal6s6s_1": _logic_module(
+        "sky130_fd_sc_hs__dlymetal6s6s_1",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__ebufn_1": _logic_module(
+        "sky130_fd_sc_hs__ebufn_1",
+        "High Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__ebufn_2": _logic_module(
+        "sky130_fd_sc_hs__ebufn_2",
+        "High Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__ebufn_4": _logic_module(
+        "sky130_fd_sc_hs__ebufn_4",
+        "High Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__ebufn_8": _logic_module(
+        "sky130_fd_sc_hs__ebufn_8",
+        "High Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__edfxbp_1": _logic_module(
+        "sky130_fd_sc_hs__edfxbp_1",
+        "High Speed",
+        ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__edfxtp_1": _logic_module(
+        "sky130_fd_sc_hs__edfxtp_1",
+        "High Speed",
+        ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__einvn_1": _logic_module(
+        "sky130_fd_sc_hs__einvn_1",
+        "High Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__einvn_2": _logic_module(
+        "sky130_fd_sc_hs__einvn_2",
+        "High Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__einvn_4": _logic_module(
+        "sky130_fd_sc_hs__einvn_4",
+        "High Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__einvn_8": _logic_module(
+        "sky130_fd_sc_hs__einvn_8",
+        "High Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__einvp_1": _logic_module(
+        "sky130_fd_sc_hs__einvp_1",
+        "High Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__einvp_2": _logic_module(
+        "sky130_fd_sc_hs__einvp_2",
+        "High Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__einvp_4": _logic_module(
+        "sky130_fd_sc_hs__einvp_4",
+        "High Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__einvp_8": _logic_module(
+        "sky130_fd_sc_hs__einvp_8",
+        "High Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hs__fa_1": _logic_module(
+        "sky130_fd_sc_hs__fa_1",
+        "High Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hs__fa_2": _logic_module(
+        "sky130_fd_sc_hs__fa_2",
+        "High Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hs__fa_4": _logic_module(
+        "sky130_fd_sc_hs__fa_4",
+        "High Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hs__fah_1": _logic_module(
+        "sky130_fd_sc_hs__fah_1",
+        "High Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hs__fah_2": _logic_module(
+        "sky130_fd_sc_hs__fah_2",
+        "High Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hs__fah_4": _logic_module(
+        "sky130_fd_sc_hs__fah_4",
+        "High Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hs__fahcin_1": _logic_module(
+        "sky130_fd_sc_hs__fahcin_1",
+        "High Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hs__fahcon_1": _logic_module(
+        "sky130_fd_sc_hs__fahcon_1",
+        "High Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"],
+    ),
+    "sky130_fd_sc_hs__fill_1": _logic_module(
+        "sky130_fd_sc_hs__fill_1", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__fill_2": _logic_module(
+        "sky130_fd_sc_hs__fill_2", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__fill_4": _logic_module(
+        "sky130_fd_sc_hs__fill_4", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__fill_8": _logic_module(
+        "sky130_fd_sc_hs__fill_8", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__fill_diode_2": _logic_module(
+        "sky130_fd_sc_hs__fill_diode_2", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__fill_diode_4": _logic_module(
+        "sky130_fd_sc_hs__fill_diode_4", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__fill_diode_8": _logic_module(
+        "sky130_fd_sc_hs__fill_diode_8", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__ha_1": _logic_module(
+        "sky130_fd_sc_hs__ha_1",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hs__ha_2": _logic_module(
+        "sky130_fd_sc_hs__ha_2",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hs__ha_4": _logic_module(
+        "sky130_fd_sc_hs__ha_4",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_hs__inv_1": _logic_module(
+        "sky130_fd_sc_hs__inv_1", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_hs__inv_2": _logic_module(
+        "sky130_fd_sc_hs__inv_2", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_hs__inv_4": _logic_module(
+        "sky130_fd_sc_hs__inv_4", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_hs__inv_8": _logic_module(
+        "sky130_fd_sc_hs__inv_8", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_hs__inv_16": _logic_module(
+        "sky130_fd_sc_hs__inv_16",
+        "High Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__maj3_1": _logic_module(
+        "sky130_fd_sc_hs__maj3_1",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__maj3_2": _logic_module(
+        "sky130_fd_sc_hs__maj3_2",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__maj3_4": _logic_module(
+        "sky130_fd_sc_hs__maj3_4",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__mux2_1": _logic_module(
+        "sky130_fd_sc_hs__mux2_1",
+        "High Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__mux2_2": _logic_module(
+        "sky130_fd_sc_hs__mux2_2",
+        "High Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__mux2_4": _logic_module(
+        "sky130_fd_sc_hs__mux2_4",
+        "High Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__mux2i_1": _logic_module(
+        "sky130_fd_sc_hs__mux2i_1",
+        "High Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__mux2i_2": _logic_module(
+        "sky130_fd_sc_hs__mux2i_2",
+        "High Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__mux2i_4": _logic_module(
+        "sky130_fd_sc_hs__mux2i_4",
+        "High Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__mux4_1": _logic_module(
+        "sky130_fd_sc_hs__mux4_1",
+        "High Speed",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__mux4_2": _logic_module(
+        "sky130_fd_sc_hs__mux4_2",
+        "High Speed",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__mux4_4": _logic_module(
+        "sky130_fd_sc_hs__mux4_4",
+        "High Speed",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__nand2_1": _logic_module(
+        "sky130_fd_sc_hs__nand2_1",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand2_2": _logic_module(
+        "sky130_fd_sc_hs__nand2_2",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand2_4": _logic_module(
+        "sky130_fd_sc_hs__nand2_4",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand2_8": _logic_module(
+        "sky130_fd_sc_hs__nand2_8",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand2b_1": _logic_module(
+        "sky130_fd_sc_hs__nand2b_1",
+        "High Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand2b_2": _logic_module(
+        "sky130_fd_sc_hs__nand2b_2",
+        "High Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand2b_4": _logic_module(
+        "sky130_fd_sc_hs__nand2b_4",
+        "High Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand3_1": _logic_module(
+        "sky130_fd_sc_hs__nand3_1",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand3_2": _logic_module(
+        "sky130_fd_sc_hs__nand3_2",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand3_4": _logic_module(
+        "sky130_fd_sc_hs__nand3_4",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand3b_1": _logic_module(
+        "sky130_fd_sc_hs__nand3b_1",
+        "High Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand3b_2": _logic_module(
+        "sky130_fd_sc_hs__nand3b_2",
+        "High Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand3b_4": _logic_module(
+        "sky130_fd_sc_hs__nand3b_4",
+        "High Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand4_1": _logic_module(
+        "sky130_fd_sc_hs__nand4_1",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand4_2": _logic_module(
+        "sky130_fd_sc_hs__nand4_2",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand4_4": _logic_module(
+        "sky130_fd_sc_hs__nand4_4",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand4b_1": _logic_module(
+        "sky130_fd_sc_hs__nand4b_1",
+        "High Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand4b_2": _logic_module(
+        "sky130_fd_sc_hs__nand4b_2",
+        "High Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand4b_4": _logic_module(
+        "sky130_fd_sc_hs__nand4b_4",
+        "High Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand4bb_1": _logic_module(
+        "sky130_fd_sc_hs__nand4bb_1",
+        "High Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand4bb_2": _logic_module(
+        "sky130_fd_sc_hs__nand4bb_2",
+        "High Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nand4bb_4": _logic_module(
+        "sky130_fd_sc_hs__nand4bb_4",
+        "High Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor2_1": _logic_module(
+        "sky130_fd_sc_hs__nor2_1",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor2_2": _logic_module(
+        "sky130_fd_sc_hs__nor2_2",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor2_4": _logic_module(
+        "sky130_fd_sc_hs__nor2_4",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor2_8": _logic_module(
+        "sky130_fd_sc_hs__nor2_8",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor2b_1": _logic_module(
+        "sky130_fd_sc_hs__nor2b_1",
+        "High Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor2b_2": _logic_module(
+        "sky130_fd_sc_hs__nor2b_2",
+        "High Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor2b_4": _logic_module(
+        "sky130_fd_sc_hs__nor2b_4",
+        "High Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor3_1": _logic_module(
+        "sky130_fd_sc_hs__nor3_1",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor3_2": _logic_module(
+        "sky130_fd_sc_hs__nor3_2",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor3_4": _logic_module(
+        "sky130_fd_sc_hs__nor3_4",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor3b_1": _logic_module(
+        "sky130_fd_sc_hs__nor3b_1",
+        "High Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor3b_2": _logic_module(
+        "sky130_fd_sc_hs__nor3b_2",
+        "High Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor3b_4": _logic_module(
+        "sky130_fd_sc_hs__nor3b_4",
+        "High Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor4_1": _logic_module(
+        "sky130_fd_sc_hs__nor4_1",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor4_2": _logic_module(
+        "sky130_fd_sc_hs__nor4_2",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor4_4": _logic_module(
+        "sky130_fd_sc_hs__nor4_4",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor4b_1": _logic_module(
+        "sky130_fd_sc_hs__nor4b_1",
+        "High Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor4b_2": _logic_module(
+        "sky130_fd_sc_hs__nor4b_2",
+        "High Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor4b_4": _logic_module(
+        "sky130_fd_sc_hs__nor4b_4",
+        "High Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor4bb_1": _logic_module(
+        "sky130_fd_sc_hs__nor4bb_1",
+        "High Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor4bb_2": _logic_module(
+        "sky130_fd_sc_hs__nor4bb_2",
+        "High Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__nor4bb_4": _logic_module(
+        "sky130_fd_sc_hs__nor4bb_4",
+        "High Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o2bb2a_1": _logic_module(
+        "sky130_fd_sc_hs__o2bb2a_1",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o2bb2a_2": _logic_module(
+        "sky130_fd_sc_hs__o2bb2a_2",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o2bb2a_4": _logic_module(
+        "sky130_fd_sc_hs__o2bb2a_4",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o2bb2ai_1": _logic_module(
+        "sky130_fd_sc_hs__o2bb2ai_1",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o2bb2ai_2": _logic_module(
+        "sky130_fd_sc_hs__o2bb2ai_2",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o2bb2ai_4": _logic_module(
+        "sky130_fd_sc_hs__o2bb2ai_4",
+        "High Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o21a_1": _logic_module(
+        "sky130_fd_sc_hs__o21a_1",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o21a_2": _logic_module(
+        "sky130_fd_sc_hs__o21a_2",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o21a_4": _logic_module(
+        "sky130_fd_sc_hs__o21a_4",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o21ai_1": _logic_module(
+        "sky130_fd_sc_hs__o21ai_1",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o21ai_2": _logic_module(
+        "sky130_fd_sc_hs__o21ai_2",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o21ai_4": _logic_module(
+        "sky130_fd_sc_hs__o21ai_4",
+        "High Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o21ba_1": _logic_module(
+        "sky130_fd_sc_hs__o21ba_1",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o21ba_2": _logic_module(
+        "sky130_fd_sc_hs__o21ba_2",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o21ba_4": _logic_module(
+        "sky130_fd_sc_hs__o21ba_4",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o21bai_1": _logic_module(
+        "sky130_fd_sc_hs__o21bai_1",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o21bai_2": _logic_module(
+        "sky130_fd_sc_hs__o21bai_2",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o21bai_4": _logic_module(
+        "sky130_fd_sc_hs__o21bai_4",
+        "High Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o22a_1": _logic_module(
+        "sky130_fd_sc_hs__o22a_1",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o22a_2": _logic_module(
+        "sky130_fd_sc_hs__o22a_2",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o22a_4": _logic_module(
+        "sky130_fd_sc_hs__o22a_4",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o22ai_1": _logic_module(
+        "sky130_fd_sc_hs__o22ai_1",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o22ai_2": _logic_module(
+        "sky130_fd_sc_hs__o22ai_2",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o22ai_4": _logic_module(
+        "sky130_fd_sc_hs__o22ai_4",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o31a_1": _logic_module(
+        "sky130_fd_sc_hs__o31a_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o31a_2": _logic_module(
+        "sky130_fd_sc_hs__o31a_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o31a_4": _logic_module(
+        "sky130_fd_sc_hs__o31a_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o31ai_1": _logic_module(
+        "sky130_fd_sc_hs__o31ai_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o31ai_2": _logic_module(
+        "sky130_fd_sc_hs__o31ai_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o31ai_4": _logic_module(
+        "sky130_fd_sc_hs__o31ai_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o32a_1": _logic_module(
+        "sky130_fd_sc_hs__o32a_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o32a_2": _logic_module(
+        "sky130_fd_sc_hs__o32a_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o32a_4": _logic_module(
+        "sky130_fd_sc_hs__o32a_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o32ai_1": _logic_module(
+        "sky130_fd_sc_hs__o32ai_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o32ai_2": _logic_module(
+        "sky130_fd_sc_hs__o32ai_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o32ai_4": _logic_module(
+        "sky130_fd_sc_hs__o32ai_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o41a_1": _logic_module(
+        "sky130_fd_sc_hs__o41a_1",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o41a_2": _logic_module(
+        "sky130_fd_sc_hs__o41a_2",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o41a_4": _logic_module(
+        "sky130_fd_sc_hs__o41a_4",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o41ai_1": _logic_module(
+        "sky130_fd_sc_hs__o41ai_1",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o41ai_2": _logic_module(
+        "sky130_fd_sc_hs__o41ai_2",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o41ai_4": _logic_module(
+        "sky130_fd_sc_hs__o41ai_4",
+        "High Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o211a_1": _logic_module(
+        "sky130_fd_sc_hs__o211a_1",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o211a_2": _logic_module(
+        "sky130_fd_sc_hs__o211a_2",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o211a_4": _logic_module(
+        "sky130_fd_sc_hs__o211a_4",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o211ai_1": _logic_module(
+        "sky130_fd_sc_hs__o211ai_1",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o211ai_2": _logic_module(
+        "sky130_fd_sc_hs__o211ai_2",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o211ai_4": _logic_module(
+        "sky130_fd_sc_hs__o211ai_4",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o221a_1": _logic_module(
+        "sky130_fd_sc_hs__o221a_1",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o221a_2": _logic_module(
+        "sky130_fd_sc_hs__o221a_2",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o221a_4": _logic_module(
+        "sky130_fd_sc_hs__o221a_4",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o221ai_1": _logic_module(
+        "sky130_fd_sc_hs__o221ai_1",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o221ai_2": _logic_module(
+        "sky130_fd_sc_hs__o221ai_2",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o221ai_4": _logic_module(
+        "sky130_fd_sc_hs__o221ai_4",
+        "High Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o311a_1": _logic_module(
+        "sky130_fd_sc_hs__o311a_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o311a_2": _logic_module(
+        "sky130_fd_sc_hs__o311a_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o311a_4": _logic_module(
+        "sky130_fd_sc_hs__o311a_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o311ai_1": _logic_module(
+        "sky130_fd_sc_hs__o311ai_1",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o311ai_2": _logic_module(
+        "sky130_fd_sc_hs__o311ai_2",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o311ai_4": _logic_module(
+        "sky130_fd_sc_hs__o311ai_4",
+        "High Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o2111a_1": _logic_module(
+        "sky130_fd_sc_hs__o2111a_1",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o2111a_2": _logic_module(
+        "sky130_fd_sc_hs__o2111a_2",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o2111a_4": _logic_module(
+        "sky130_fd_sc_hs__o2111a_4",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__o2111ai_1": _logic_module(
+        "sky130_fd_sc_hs__o2111ai_1",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o2111ai_2": _logic_module(
+        "sky130_fd_sc_hs__o2111ai_2",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__o2111ai_4": _logic_module(
+        "sky130_fd_sc_hs__o2111ai_4",
+        "High Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__or2_1": _logic_module(
+        "sky130_fd_sc_hs__or2_1",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or2_2": _logic_module(
+        "sky130_fd_sc_hs__or2_2",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or2_4": _logic_module(
+        "sky130_fd_sc_hs__or2_4",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or2b_1": _logic_module(
+        "sky130_fd_sc_hs__or2b_1",
+        "High Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or2b_2": _logic_module(
+        "sky130_fd_sc_hs__or2b_2",
+        "High Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or2b_4": _logic_module(
+        "sky130_fd_sc_hs__or2b_4",
+        "High Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or3_1": _logic_module(
+        "sky130_fd_sc_hs__or3_1",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or3_2": _logic_module(
+        "sky130_fd_sc_hs__or3_2",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or3_4": _logic_module(
+        "sky130_fd_sc_hs__or3_4",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or3b_1": _logic_module(
+        "sky130_fd_sc_hs__or3b_1",
+        "High Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or3b_2": _logic_module(
+        "sky130_fd_sc_hs__or3b_2",
+        "High Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or3b_4": _logic_module(
+        "sky130_fd_sc_hs__or3b_4",
+        "High Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or4_1": _logic_module(
+        "sky130_fd_sc_hs__or4_1",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or4_2": _logic_module(
+        "sky130_fd_sc_hs__or4_2",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or4_4": _logic_module(
+        "sky130_fd_sc_hs__or4_4",
+        "High Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or4b_1": _logic_module(
+        "sky130_fd_sc_hs__or4b_1",
+        "High Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or4b_2": _logic_module(
+        "sky130_fd_sc_hs__or4b_2",
+        "High Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or4b_4": _logic_module(
+        "sky130_fd_sc_hs__or4b_4",
+        "High Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or4bb_1": _logic_module(
+        "sky130_fd_sc_hs__or4bb_1",
+        "High Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or4bb_2": _logic_module(
+        "sky130_fd_sc_hs__or4bb_2",
+        "High Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__or4bb_4": _logic_module(
+        "sky130_fd_sc_hs__or4bb_4",
+        "High Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__sdfbbn_1": _logic_module(
+        "sky130_fd_sc_hs__sdfbbn_1",
+        "High Speed",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hs__sdfbbn_2": _logic_module(
+        "sky130_fd_sc_hs__sdfbbn_2",
+        "High Speed",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hs__sdfbbp_1": _logic_module(
+        "sky130_fd_sc_hs__sdfbbp_1",
+        "High Speed",
+        [
+            "CLK",
+            "D",
+            "RESET_B",
+            "SCD",
+            "SCE",
+            "SET_B",
+            "VGND",
+            "VNB",
+            "VPB",
+            "VPWR",
+            "Q",
+        ],
+    ),
+    "sky130_fd_sc_hs__sdfrbp_1": _logic_module(
+        "sky130_fd_sc_hs__sdfrbp_1",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__sdfrbp_2": _logic_module(
+        "sky130_fd_sc_hs__sdfrbp_2",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__sdfrtn_1": _logic_module(
+        "sky130_fd_sc_hs__sdfrtn_1",
+        "High Speed",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sdfrtp_1": _logic_module(
+        "sky130_fd_sc_hs__sdfrtp_1",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sdfrtp_2": _logic_module(
+        "sky130_fd_sc_hs__sdfrtp_2",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sdfrtp_4": _logic_module(
+        "sky130_fd_sc_hs__sdfrtp_4",
+        "High Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sdfsbp_1": _logic_module(
+        "sky130_fd_sc_hs__sdfsbp_1",
+        "High Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__sdfsbp_2": _logic_module(
+        "sky130_fd_sc_hs__sdfsbp_2",
+        "High Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__sdfstp_1": _logic_module(
+        "sky130_fd_sc_hs__sdfstp_1",
+        "High Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sdfstp_2": _logic_module(
+        "sky130_fd_sc_hs__sdfstp_2",
+        "High Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sdfstp_4": _logic_module(
+        "sky130_fd_sc_hs__sdfstp_4",
+        "High Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sdfxbp_1": _logic_module(
+        "sky130_fd_sc_hs__sdfxbp_1",
+        "High Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__sdfxbp_2": _logic_module(
+        "sky130_fd_sc_hs__sdfxbp_2",
+        "High Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__sdfxtp_1": _logic_module(
+        "sky130_fd_sc_hs__sdfxtp_1",
+        "High Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sdfxtp_2": _logic_module(
+        "sky130_fd_sc_hs__sdfxtp_2",
+        "High Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sdfxtp_4": _logic_module(
+        "sky130_fd_sc_hs__sdfxtp_4",
+        "High Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sdlclkp_1": _logic_module(
+        "sky130_fd_sc_hs__sdlclkp_1",
+        "High Speed",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hs__sdlclkp_2": _logic_module(
+        "sky130_fd_sc_hs__sdlclkp_2",
+        "High Speed",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hs__sdlclkp_4": _logic_module(
+        "sky130_fd_sc_hs__sdlclkp_4",
+        "High Speed",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hs__sedfxbp_1": _logic_module(
+        "sky130_fd_sc_hs__sedfxbp_1",
+        "High Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__sedfxbp_2": _logic_module(
+        "sky130_fd_sc_hs__sedfxbp_2",
+        "High Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hs__sedfxtp_1": _logic_module(
+        "sky130_fd_sc_hs__sedfxtp_1",
+        "High Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sedfxtp_2": _logic_module(
+        "sky130_fd_sc_hs__sedfxtp_2",
+        "High Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__sedfxtp_4": _logic_module(
+        "sky130_fd_sc_hs__sedfxtp_4",
+        "High Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hs__tap_1": _logic_module(
+        "sky130_fd_sc_hs__tap_1", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__tap_2": _logic_module(
+        "sky130_fd_sc_hs__tap_2", "High Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__tapmet1_2": _logic_module(
+        "sky130_fd_sc_hs__tapmet1_2", "High Speed", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__tapvgnd2_1": _logic_module(
+        "sky130_fd_sc_hs__tapvgnd2_1", "High Speed", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__tapvgnd_1": _logic_module(
+        "sky130_fd_sc_hs__tapvgnd_1", "High Speed", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__tapvpwrvgnd_1": _logic_module(
+        "sky130_fd_sc_hs__tapvpwrvgnd_1", "High Speed", ["VGND", "VPWR"]
+    ),
+    "sky130_fd_sc_hs__xnor2_1": _logic_module(
+        "sky130_fd_sc_hs__xnor2_1",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__xnor2_2": _logic_module(
+        "sky130_fd_sc_hs__xnor2_2",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__xnor2_4": _logic_module(
+        "sky130_fd_sc_hs__xnor2_4",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hs__xnor3_1": _logic_module(
+        "sky130_fd_sc_hs__xnor3_1",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__xnor3_2": _logic_module(
+        "sky130_fd_sc_hs__xnor3_2",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__xnor3_4": _logic_module(
+        "sky130_fd_sc_hs__xnor3_4",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__xor2_1": _logic_module(
+        "sky130_fd_sc_hs__xor2_1",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__xor2_2": _logic_module(
+        "sky130_fd_sc_hs__xor2_2",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__xor2_4": _logic_module(
+        "sky130_fd_sc_hs__xor2_4",
+        "High Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__xor3_1": _logic_module(
+        "sky130_fd_sc_hs__xor3_1",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__xor3_2": _logic_module(
+        "sky130_fd_sc_hs__xor3_2",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hs__xor3_4": _logic_module(
+        "sky130_fd_sc_hs__xor3_4",
+        "High Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+}
+
+hvl: Dict[str, h.ExternalModule] = {
+    "sky130_fd_sc_hvl__a21o_1": _logic_module(
+        "sky130_fd_sc_hvl__a21o_1",
+        "High Voltage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__a21oi_1": _logic_module(
+        "sky130_fd_sc_hvl__a21oi_1",
+        "High Voltage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__a22o_1": _logic_module(
+        "sky130_fd_sc_hvl__a22o_1",
+        "High Voltage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__a22oi_1": _logic_module(
+        "sky130_fd_sc_hvl__a22oi_1",
+        "High Voltage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__and2_1": _logic_module(
+        "sky130_fd_sc_hvl__and2_1",
+        "High Voltage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__and3_1": _logic_module(
+        "sky130_fd_sc_hvl__and3_1",
+        "High Voltage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__buf_1": _logic_module(
+        "sky130_fd_sc_hvl__buf_1",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__buf_2": _logic_module(
+        "sky130_fd_sc_hvl__buf_2",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__buf_4": _logic_module(
+        "sky130_fd_sc_hvl__buf_4",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__buf_8": _logic_module(
+        "sky130_fd_sc_hvl__buf_8",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__buf_16": _logic_module(
+        "sky130_fd_sc_hvl__buf_16",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__buf_32": _logic_module(
+        "sky130_fd_sc_hvl__buf_32",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__conb_1": _logic_module(
+        "sky130_fd_sc_hvl__conb_1",
+        "High Voltage",
+        ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"],
+    ),
+    "sky130_fd_sc_hvl__decap_4": _logic_module(
+        "sky130_fd_sc_hvl__decap_4", "High Voltage", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hvl__decap_8": _logic_module(
+        "sky130_fd_sc_hvl__decap_8", "High Voltage", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hvl__dfrbp_1": _logic_module(
+        "sky130_fd_sc_hvl__dfrbp_1",
+        "High Voltage",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hvl__dfrtp_1": _logic_module(
+        "sky130_fd_sc_hvl__dfrtp_1",
+        "High Voltage",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hvl__dfsbp_1": _logic_module(
+        "sky130_fd_sc_hvl__dfsbp_1",
+        "High Voltage",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hvl__dfstp_1": _logic_module(
+        "sky130_fd_sc_hvl__dfstp_1",
+        "High Voltage",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hvl__dfxbp_1": _logic_module(
+        "sky130_fd_sc_hvl__dfxbp_1",
+        "High Voltage",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hvl__dfxtp_1": _logic_module(
+        "sky130_fd_sc_hvl__dfxtp_1",
+        "High Voltage",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hvl__diode_2": _logic_module(
+        "sky130_fd_sc_hvl__diode_2",
+        "High Voltage",
+        ["DIODE", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hvl__dlclkp_1": _logic_module(
+        "sky130_fd_sc_hvl__dlclkp_1",
+        "High Voltage",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hvl__dlrtp_1": _logic_module(
+        "sky130_fd_sc_hvl__dlrtp_1",
+        "High Voltage",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hvl__dlxtp_1": _logic_module(
+        "sky130_fd_sc_hvl__dlxtp_1",
+        "High Voltage",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hvl__einvn_1": _logic_module(
+        "sky130_fd_sc_hvl__einvn_1",
+        "High Voltage",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hvl__einvp_1": _logic_module(
+        "sky130_fd_sc_hvl__einvp_1",
+        "High Voltage",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_hvl__fill_1": _logic_module(
+        "sky130_fd_sc_hvl__fill_1", "High Voltage", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hvl__fill_2": _logic_module(
+        "sky130_fd_sc_hvl__fill_2", "High Voltage", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hvl__fill_4": _logic_module(
+        "sky130_fd_sc_hvl__fill_4", "High Voltage", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hvl__fill_8": _logic_module(
+        "sky130_fd_sc_hvl__fill_8", "High Voltage", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_hvl__inv_1": _logic_module(
+        "sky130_fd_sc_hvl__inv_1",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__inv_2": _logic_module(
+        "sky130_fd_sc_hvl__inv_2",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__inv_4": _logic_module(
+        "sky130_fd_sc_hvl__inv_4",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__inv_8": _logic_module(
+        "sky130_fd_sc_hvl__inv_8",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__inv_16": _logic_module(
+        "sky130_fd_sc_hvl__inv_16",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__lsbufhv2hv_hl_1": _logic_module(
+        "sky130_fd_sc_hvl__lsbufhv2hv_hl_1",
+        "High Voltage",
+        ["A", "LOWHVPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__lsbufhv2hv_lh_1": _logic_module(
+        "sky130_fd_sc_hvl__lsbufhv2hv_lh_1",
+        "High Voltage",
+        ["A", "LOWHVPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__lsbufhv2lv_1": _logic_module(
+        "sky130_fd_sc_hvl__lsbufhv2lv_1",
+        "High Voltage",
+        ["A", "LVPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__lsbufhv2lv_simple_1": _logic_module(
+        "sky130_fd_sc_hvl__lsbufhv2lv_simple_1",
+        "High Voltage",
+        ["A", "LVPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__lsbuflv2hv_1": _logic_module(
+        "sky130_fd_sc_hvl__lsbuflv2hv_1",
+        "High Voltage",
+        ["A", "LVPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3": _logic_module(
+        "sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3",
+        "High Voltage",
+        ["A", "SLEEP_B", "LVPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1": _logic_module(
+        "sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1",
+        "High Voltage",
+        ["A", "SLEEP_B", "LVPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1": _logic_module(
+        "sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1",
+        "High Voltage",
+        ["A", "LVPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__mux2_1": _logic_module(
+        "sky130_fd_sc_hvl__mux2_1",
+        "High Voltage",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__mux4_1": _logic_module(
+        "sky130_fd_sc_hvl__mux4_1",
+        "High Voltage",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__nand2_1": _logic_module(
+        "sky130_fd_sc_hvl__nand2_1",
+        "High Voltage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__nand3_1": _logic_module(
+        "sky130_fd_sc_hvl__nand3_1",
+        "High Voltage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__nor2_1": _logic_module(
+        "sky130_fd_sc_hvl__nor2_1",
+        "High Voltage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__nor3_1": _logic_module(
+        "sky130_fd_sc_hvl__nor3_1",
+        "High Voltage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__o21a_1": _logic_module(
+        "sky130_fd_sc_hvl__o21a_1",
+        "High Voltage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__o21ai_1": _logic_module(
+        "sky130_fd_sc_hvl__o21ai_1",
+        "High Voltage",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__o22a_1": _logic_module(
+        "sky130_fd_sc_hvl__o22a_1",
+        "High Voltage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__o22ai_1": _logic_module(
+        "sky130_fd_sc_hvl__o22ai_1",
+        "High Voltage",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__or2_1": _logic_module(
+        "sky130_fd_sc_hvl__or2_1",
+        "High Voltage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__or3_1": _logic_module(
+        "sky130_fd_sc_hvl__or3_1",
+        "High Voltage",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__probe_p_8": _logic_module(
+        "sky130_fd_sc_hvl__probe_p_8",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__probec_p_8": _logic_module(
+        "sky130_fd_sc_hvl__probec_p_8",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__schmittbuf_1": _logic_module(
+        "sky130_fd_sc_hvl__schmittbuf_1",
+        "High Voltage",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_hvl__sdfrbp_1": _logic_module(
+        "sky130_fd_sc_hvl__sdfrbp_1",
+        "High Voltage",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hvl__sdfrtp_1": _logic_module(
+        "sky130_fd_sc_hvl__sdfrtp_1",
+        "High Voltage",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hvl__sdfsbp_1": _logic_module(
+        "sky130_fd_sc_hvl__sdfsbp_1",
+        "High Voltage",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hvl__sdfstp_1": _logic_module(
+        "sky130_fd_sc_hvl__sdfstp_1",
+        "High Voltage",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hvl__sdfxbp_1": _logic_module(
+        "sky130_fd_sc_hvl__sdfxbp_1",
+        "High Voltage",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_hvl__sdfxtp_1": _logic_module(
+        "sky130_fd_sc_hvl__sdfxtp_1",
+        "High Voltage",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hvl__sdlclkp_1": _logic_module(
+        "sky130_fd_sc_hvl__sdlclkp_1",
+        "High Voltage",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_hvl__sdlxtp_1": _logic_module(
+        "sky130_fd_sc_hvl__sdlxtp_1",
+        "High Voltage",
+        ["D", "GATE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_hvl__xnor2_1": _logic_module(
+        "sky130_fd_sc_hvl__xnor2_1",
+        "High Voltage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_hvl__xor2_1": _logic_module(
+        "sky130_fd_sc_hvl__xor2_1",
+        "High Voltage",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+}
+
+lp: Dict[str, h.ExternalModule] = {
+    "sky130_fd_sc_lp__a2bb2o_0": _logic_module(
+        "sky130_fd_sc_lp__a2bb2o_0",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2bb2o_1": _logic_module(
+        "sky130_fd_sc_lp__a2bb2o_1",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2bb2o_2": _logic_module(
+        "sky130_fd_sc_lp__a2bb2o_2",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2bb2o_4": _logic_module(
+        "sky130_fd_sc_lp__a2bb2o_4",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2bb2o_lp": _logic_module(
+        "sky130_fd_sc_lp__a2bb2o_lp",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2bb2o_m": _logic_module(
+        "sky130_fd_sc_lp__a2bb2o_m",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2bb2oi_0": _logic_module(
+        "sky130_fd_sc_lp__a2bb2oi_0",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2bb2oi_1": _logic_module(
+        "sky130_fd_sc_lp__a2bb2oi_1",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2bb2oi_2": _logic_module(
+        "sky130_fd_sc_lp__a2bb2oi_2",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2bb2oi_4": _logic_module(
+        "sky130_fd_sc_lp__a2bb2oi_4",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2bb2oi_lp": _logic_module(
+        "sky130_fd_sc_lp__a2bb2oi_lp",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2bb2oi_m": _logic_module(
+        "sky130_fd_sc_lp__a2bb2oi_m",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21bo_0": _logic_module(
+        "sky130_fd_sc_lp__a21bo_0",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21bo_1": _logic_module(
+        "sky130_fd_sc_lp__a21bo_1",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21bo_2": _logic_module(
+        "sky130_fd_sc_lp__a21bo_2",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21bo_4": _logic_module(
+        "sky130_fd_sc_lp__a21bo_4",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21bo_lp": _logic_module(
+        "sky130_fd_sc_lp__a21bo_lp",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21bo_m": _logic_module(
+        "sky130_fd_sc_lp__a21bo_m",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21boi_0": _logic_module(
+        "sky130_fd_sc_lp__a21boi_0",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21boi_1": _logic_module(
+        "sky130_fd_sc_lp__a21boi_1",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21boi_2": _logic_module(
+        "sky130_fd_sc_lp__a21boi_2",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21boi_4": _logic_module(
+        "sky130_fd_sc_lp__a21boi_4",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21boi_lp": _logic_module(
+        "sky130_fd_sc_lp__a21boi_lp",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21boi_m": _logic_module(
+        "sky130_fd_sc_lp__a21boi_m",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21o_0": _logic_module(
+        "sky130_fd_sc_lp__a21o_0",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21o_1": _logic_module(
+        "sky130_fd_sc_lp__a21o_1",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21o_2": _logic_module(
+        "sky130_fd_sc_lp__a21o_2",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21o_4": _logic_module(
+        "sky130_fd_sc_lp__a21o_4",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21o_lp": _logic_module(
+        "sky130_fd_sc_lp__a21o_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21o_m": _logic_module(
+        "sky130_fd_sc_lp__a21o_m",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a21oi_0": _logic_module(
+        "sky130_fd_sc_lp__a21oi_0",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21oi_1": _logic_module(
+        "sky130_fd_sc_lp__a21oi_1",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21oi_2": _logic_module(
+        "sky130_fd_sc_lp__a21oi_2",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21oi_4": _logic_module(
+        "sky130_fd_sc_lp__a21oi_4",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21oi_lp": _logic_module(
+        "sky130_fd_sc_lp__a21oi_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a21oi_m": _logic_module(
+        "sky130_fd_sc_lp__a21oi_m",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a22o_0": _logic_module(
+        "sky130_fd_sc_lp__a22o_0",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a22o_1": _logic_module(
+        "sky130_fd_sc_lp__a22o_1",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a22o_2": _logic_module(
+        "sky130_fd_sc_lp__a22o_2",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a22o_4": _logic_module(
+        "sky130_fd_sc_lp__a22o_4",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a22o_lp": _logic_module(
+        "sky130_fd_sc_lp__a22o_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a22o_m": _logic_module(
+        "sky130_fd_sc_lp__a22o_m",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a22oi_0": _logic_module(
+        "sky130_fd_sc_lp__a22oi_0",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a22oi_1": _logic_module(
+        "sky130_fd_sc_lp__a22oi_1",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a22oi_2": _logic_module(
+        "sky130_fd_sc_lp__a22oi_2",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a22oi_4": _logic_module(
+        "sky130_fd_sc_lp__a22oi_4",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a22oi_lp": _logic_module(
+        "sky130_fd_sc_lp__a22oi_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a22oi_m": _logic_module(
+        "sky130_fd_sc_lp__a22oi_m",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a31o_0": _logic_module(
+        "sky130_fd_sc_lp__a31o_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a31o_1": _logic_module(
+        "sky130_fd_sc_lp__a31o_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a31o_2": _logic_module(
+        "sky130_fd_sc_lp__a31o_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a31o_4": _logic_module(
+        "sky130_fd_sc_lp__a31o_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a31o_lp": _logic_module(
+        "sky130_fd_sc_lp__a31o_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a31o_m": _logic_module(
+        "sky130_fd_sc_lp__a31o_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a31oi_0": _logic_module(
+        "sky130_fd_sc_lp__a31oi_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a31oi_1": _logic_module(
+        "sky130_fd_sc_lp__a31oi_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a31oi_2": _logic_module(
+        "sky130_fd_sc_lp__a31oi_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a31oi_4": _logic_module(
+        "sky130_fd_sc_lp__a31oi_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a31oi_lp": _logic_module(
+        "sky130_fd_sc_lp__a31oi_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a31oi_m": _logic_module(
+        "sky130_fd_sc_lp__a31oi_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a32o_0": _logic_module(
+        "sky130_fd_sc_lp__a32o_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a32o_1": _logic_module(
+        "sky130_fd_sc_lp__a32o_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a32o_2": _logic_module(
+        "sky130_fd_sc_lp__a32o_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a32o_4": _logic_module(
+        "sky130_fd_sc_lp__a32o_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a32o_lp": _logic_module(
+        "sky130_fd_sc_lp__a32o_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a32o_m": _logic_module(
+        "sky130_fd_sc_lp__a32o_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a32oi_0": _logic_module(
+        "sky130_fd_sc_lp__a32oi_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a32oi_1": _logic_module(
+        "sky130_fd_sc_lp__a32oi_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a32oi_2": _logic_module(
+        "sky130_fd_sc_lp__a32oi_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a32oi_4": _logic_module(
+        "sky130_fd_sc_lp__a32oi_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a32oi_lp": _logic_module(
+        "sky130_fd_sc_lp__a32oi_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a32oi_m": _logic_module(
+        "sky130_fd_sc_lp__a32oi_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a41o_0": _logic_module(
+        "sky130_fd_sc_lp__a41o_0",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a41o_1": _logic_module(
+        "sky130_fd_sc_lp__a41o_1",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a41o_2": _logic_module(
+        "sky130_fd_sc_lp__a41o_2",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a41o_4": _logic_module(
+        "sky130_fd_sc_lp__a41o_4",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a41o_lp": _logic_module(
+        "sky130_fd_sc_lp__a41o_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a41o_m": _logic_module(
+        "sky130_fd_sc_lp__a41o_m",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a41oi_0": _logic_module(
+        "sky130_fd_sc_lp__a41oi_0",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a41oi_1": _logic_module(
+        "sky130_fd_sc_lp__a41oi_1",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a41oi_2": _logic_module(
+        "sky130_fd_sc_lp__a41oi_2",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a41oi_4": _logic_module(
+        "sky130_fd_sc_lp__a41oi_4",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a41oi_lp": _logic_module(
+        "sky130_fd_sc_lp__a41oi_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a41oi_m": _logic_module(
+        "sky130_fd_sc_lp__a41oi_m",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a211o_0": _logic_module(
+        "sky130_fd_sc_lp__a211o_0",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a211o_1": _logic_module(
+        "sky130_fd_sc_lp__a211o_1",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a211o_2": _logic_module(
+        "sky130_fd_sc_lp__a211o_2",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a211o_4": _logic_module(
+        "sky130_fd_sc_lp__a211o_4",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a211o_lp": _logic_module(
+        "sky130_fd_sc_lp__a211o_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a211o_m": _logic_module(
+        "sky130_fd_sc_lp__a211o_m",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a211oi_0": _logic_module(
+        "sky130_fd_sc_lp__a211oi_0",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a211oi_1": _logic_module(
+        "sky130_fd_sc_lp__a211oi_1",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a211oi_2": _logic_module(
+        "sky130_fd_sc_lp__a211oi_2",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a211oi_4": _logic_module(
+        "sky130_fd_sc_lp__a211oi_4",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a211oi_lp": _logic_module(
+        "sky130_fd_sc_lp__a211oi_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a211oi_m": _logic_module(
+        "sky130_fd_sc_lp__a211oi_m",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a221o_0": _logic_module(
+        "sky130_fd_sc_lp__a221o_0",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a221o_1": _logic_module(
+        "sky130_fd_sc_lp__a221o_1",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a221o_2": _logic_module(
+        "sky130_fd_sc_lp__a221o_2",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a221o_4": _logic_module(
+        "sky130_fd_sc_lp__a221o_4",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a221o_lp": _logic_module(
+        "sky130_fd_sc_lp__a221o_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a221o_m": _logic_module(
+        "sky130_fd_sc_lp__a221o_m",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a221oi_0": _logic_module(
+        "sky130_fd_sc_lp__a221oi_0",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a221oi_1": _logic_module(
+        "sky130_fd_sc_lp__a221oi_1",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a221oi_2": _logic_module(
+        "sky130_fd_sc_lp__a221oi_2",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a221oi_4": _logic_module(
+        "sky130_fd_sc_lp__a221oi_4",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a221oi_lp": _logic_module(
+        "sky130_fd_sc_lp__a221oi_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a221oi_m": _logic_module(
+        "sky130_fd_sc_lp__a221oi_m",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a311o_0": _logic_module(
+        "sky130_fd_sc_lp__a311o_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a311o_1": _logic_module(
+        "sky130_fd_sc_lp__a311o_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a311o_2": _logic_module(
+        "sky130_fd_sc_lp__a311o_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a311o_4": _logic_module(
+        "sky130_fd_sc_lp__a311o_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a311o_lp": _logic_module(
+        "sky130_fd_sc_lp__a311o_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a311o_m": _logic_module(
+        "sky130_fd_sc_lp__a311o_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a311oi_0": _logic_module(
+        "sky130_fd_sc_lp__a311oi_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a311oi_1": _logic_module(
+        "sky130_fd_sc_lp__a311oi_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a311oi_2": _logic_module(
+        "sky130_fd_sc_lp__a311oi_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a311oi_4": _logic_module(
+        "sky130_fd_sc_lp__a311oi_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a311oi_lp": _logic_module(
+        "sky130_fd_sc_lp__a311oi_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a311oi_m": _logic_module(
+        "sky130_fd_sc_lp__a311oi_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2111o_0": _logic_module(
+        "sky130_fd_sc_lp__a2111o_0",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2111o_1": _logic_module(
+        "sky130_fd_sc_lp__a2111o_1",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2111o_2": _logic_module(
+        "sky130_fd_sc_lp__a2111o_2",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2111o_4": _logic_module(
+        "sky130_fd_sc_lp__a2111o_4",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2111o_lp": _logic_module(
+        "sky130_fd_sc_lp__a2111o_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2111o_m": _logic_module(
+        "sky130_fd_sc_lp__a2111o_m",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__a2111oi_0": _logic_module(
+        "sky130_fd_sc_lp__a2111oi_0",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2111oi_1": _logic_module(
+        "sky130_fd_sc_lp__a2111oi_1",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2111oi_2": _logic_module(
+        "sky130_fd_sc_lp__a2111oi_2",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2111oi_4": _logic_module(
+        "sky130_fd_sc_lp__a2111oi_4",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2111oi_lp": _logic_module(
+        "sky130_fd_sc_lp__a2111oi_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__a2111oi_m": _logic_module(
+        "sky130_fd_sc_lp__a2111oi_m",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__and2_0": _logic_module(
+        "sky130_fd_sc_lp__and2_0",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2_1": _logic_module(
+        "sky130_fd_sc_lp__and2_1",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2_2": _logic_module(
+        "sky130_fd_sc_lp__and2_2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2_4": _logic_module(
+        "sky130_fd_sc_lp__and2_4",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2_lp2": _logic_module(
+        "sky130_fd_sc_lp__and2_lp2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2_lp": _logic_module(
+        "sky130_fd_sc_lp__and2_lp",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2_m": _logic_module(
+        "sky130_fd_sc_lp__and2_m",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2b_1": _logic_module(
+        "sky130_fd_sc_lp__and2b_1",
+        "Low Power",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2b_2": _logic_module(
+        "sky130_fd_sc_lp__and2b_2",
+        "Low Power",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2b_4": _logic_module(
+        "sky130_fd_sc_lp__and2b_4",
+        "Low Power",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2b_lp": _logic_module(
+        "sky130_fd_sc_lp__and2b_lp",
+        "Low Power",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and2b_m": _logic_module(
+        "sky130_fd_sc_lp__and2b_m",
+        "Low Power",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3_0": _logic_module(
+        "sky130_fd_sc_lp__and3_0",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3_1": _logic_module(
+        "sky130_fd_sc_lp__and3_1",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3_2": _logic_module(
+        "sky130_fd_sc_lp__and3_2",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3_4": _logic_module(
+        "sky130_fd_sc_lp__and3_4",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3_lp": _logic_module(
+        "sky130_fd_sc_lp__and3_lp",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3_m": _logic_module(
+        "sky130_fd_sc_lp__and3_m",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3b_1": _logic_module(
+        "sky130_fd_sc_lp__and3b_1",
+        "Low Power",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3b_2": _logic_module(
+        "sky130_fd_sc_lp__and3b_2",
+        "Low Power",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3b_4": _logic_module(
+        "sky130_fd_sc_lp__and3b_4",
+        "Low Power",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3b_lp": _logic_module(
+        "sky130_fd_sc_lp__and3b_lp",
+        "Low Power",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and3b_m": _logic_module(
+        "sky130_fd_sc_lp__and3b_m",
+        "Low Power",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4_0": _logic_module(
+        "sky130_fd_sc_lp__and4_0",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4_1": _logic_module(
+        "sky130_fd_sc_lp__and4_1",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4_2": _logic_module(
+        "sky130_fd_sc_lp__and4_2",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4_4": _logic_module(
+        "sky130_fd_sc_lp__and4_4",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4_lp2": _logic_module(
+        "sky130_fd_sc_lp__and4_lp2",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4_lp": _logic_module(
+        "sky130_fd_sc_lp__and4_lp",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4_m": _logic_module(
+        "sky130_fd_sc_lp__and4_m",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4b_1": _logic_module(
+        "sky130_fd_sc_lp__and4b_1",
+        "Low Power",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4b_2": _logic_module(
+        "sky130_fd_sc_lp__and4b_2",
+        "Low Power",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4b_4": _logic_module(
+        "sky130_fd_sc_lp__and4b_4",
+        "Low Power",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4b_lp": _logic_module(
+        "sky130_fd_sc_lp__and4b_lp",
+        "Low Power",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4b_m": _logic_module(
+        "sky130_fd_sc_lp__and4b_m",
+        "Low Power",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4bb_1": _logic_module(
+        "sky130_fd_sc_lp__and4bb_1",
+        "Low Power",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4bb_2": _logic_module(
+        "sky130_fd_sc_lp__and4bb_2",
+        "Low Power",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4bb_4": _logic_module(
+        "sky130_fd_sc_lp__and4bb_4",
+        "Low Power",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4bb_lp": _logic_module(
+        "sky130_fd_sc_lp__and4bb_lp",
+        "Low Power",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__and4bb_m": _logic_module(
+        "sky130_fd_sc_lp__and4bb_m",
+        "Low Power",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__buf_0": _logic_module(
+        "sky130_fd_sc_lp__buf_0", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_lp__buf_1": _logic_module(
+        "sky130_fd_sc_lp__buf_1", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_lp__buf_2": _logic_module(
+        "sky130_fd_sc_lp__buf_2", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_lp__buf_4": _logic_module(
+        "sky130_fd_sc_lp__buf_4", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_lp__buf_8": _logic_module(
+        "sky130_fd_sc_lp__buf_8", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_lp__buf_16": _logic_module(
+        "sky130_fd_sc_lp__buf_16", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_lp__buf_lp": _logic_module(
+        "sky130_fd_sc_lp__buf_lp", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_lp__buf_m": _logic_module(
+        "sky130_fd_sc_lp__buf_m", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_lp__bufbuf_8": _logic_module(
+        "sky130_fd_sc_lp__bufbuf_8",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__bufbuf_16": _logic_module(
+        "sky130_fd_sc_lp__bufbuf_16",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__bufinv_8": _logic_module(
+        "sky130_fd_sc_lp__bufinv_8",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__bufinv_16": _logic_module(
+        "sky130_fd_sc_lp__bufinv_16",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__bufkapwr_1": _logic_module(
+        "sky130_fd_sc_lp__bufkapwr_1",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__bufkapwr_2": _logic_module(
+        "sky130_fd_sc_lp__bufkapwr_2",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__bufkapwr_4": _logic_module(
+        "sky130_fd_sc_lp__bufkapwr_4",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__bufkapwr_8": _logic_module(
+        "sky130_fd_sc_lp__bufkapwr_8",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__buflp_0": _logic_module(
+        "sky130_fd_sc_lp__buflp_0",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__buflp_1": _logic_module(
+        "sky130_fd_sc_lp__buflp_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__buflp_2": _logic_module(
+        "sky130_fd_sc_lp__buflp_2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__buflp_4": _logic_module(
+        "sky130_fd_sc_lp__buflp_4",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__buflp_8": _logic_module(
+        "sky130_fd_sc_lp__buflp_8",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__buflp_m": _logic_module(
+        "sky130_fd_sc_lp__buflp_m",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__busdriver2_20": _logic_module(
+        "sky130_fd_sc_lp__busdriver2_20",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__busdriver_20": _logic_module(
+        "sky130_fd_sc_lp__busdriver_20",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__busdrivernovlp2_20": _logic_module(
+        "sky130_fd_sc_lp__busdrivernovlp2_20",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__busdrivernovlp_20": _logic_module(
+        "sky130_fd_sc_lp__busdrivernovlp_20",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__busdrivernovlpsleep_20": _logic_module(
+        "sky130_fd_sc_lp__busdrivernovlpsleep_20",
+        "Low Power",
+        ["A", "SLEEP", "TE_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_lp__bushold0_1": _logic_module(
+        "sky130_fd_sc_lp__bushold0_1",
+        "Low Power",
+        ["RESET", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__bushold_1": _logic_module(
+        "sky130_fd_sc_lp__bushold_1",
+        "Low Power",
+        ["RESET", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__busreceiver_0": _logic_module(
+        "sky130_fd_sc_lp__busreceiver_0",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__busreceiver_1": _logic_module(
+        "sky130_fd_sc_lp__busreceiver_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__busreceiver_m": _logic_module(
+        "sky130_fd_sc_lp__busreceiver_m",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuf_0": _logic_module(
+        "sky130_fd_sc_lp__clkbuf_0",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuf_1": _logic_module(
+        "sky130_fd_sc_lp__clkbuf_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuf_2": _logic_module(
+        "sky130_fd_sc_lp__clkbuf_2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuf_4": _logic_module(
+        "sky130_fd_sc_lp__clkbuf_4",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuf_8": _logic_module(
+        "sky130_fd_sc_lp__clkbuf_8",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuf_16": _logic_module(
+        "sky130_fd_sc_lp__clkbuf_16",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuf_lp": _logic_module(
+        "sky130_fd_sc_lp__clkbuf_lp",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuflp_2": _logic_module(
+        "sky130_fd_sc_lp__clkbuflp_2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuflp_4": _logic_module(
+        "sky130_fd_sc_lp__clkbuflp_4",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuflp_8": _logic_module(
+        "sky130_fd_sc_lp__clkbuflp_8",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkbuflp_16": _logic_module(
+        "sky130_fd_sc_lp__clkbuflp_16",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkdlybuf4s15_1": _logic_module(
+        "sky130_fd_sc_lp__clkdlybuf4s15_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkdlybuf4s15_2": _logic_module(
+        "sky130_fd_sc_lp__clkdlybuf4s15_2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkdlybuf4s18_1": _logic_module(
+        "sky130_fd_sc_lp__clkdlybuf4s18_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkdlybuf4s18_2": _logic_module(
+        "sky130_fd_sc_lp__clkdlybuf4s18_2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkdlybuf4s25_1": _logic_module(
+        "sky130_fd_sc_lp__clkdlybuf4s25_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkdlybuf4s25_2": _logic_module(
+        "sky130_fd_sc_lp__clkdlybuf4s25_2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkdlybuf4s50_1": _logic_module(
+        "sky130_fd_sc_lp__clkdlybuf4s50_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkdlybuf4s50_2": _logic_module(
+        "sky130_fd_sc_lp__clkdlybuf4s50_2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__clkinv_0": _logic_module(
+        "sky130_fd_sc_lp__clkinv_0",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinv_1": _logic_module(
+        "sky130_fd_sc_lp__clkinv_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinv_2": _logic_module(
+        "sky130_fd_sc_lp__clkinv_2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinv_4": _logic_module(
+        "sky130_fd_sc_lp__clkinv_4",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinv_8": _logic_module(
+        "sky130_fd_sc_lp__clkinv_8",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinv_16": _logic_module(
+        "sky130_fd_sc_lp__clkinv_16",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinv_lp2": _logic_module(
+        "sky130_fd_sc_lp__clkinv_lp2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinv_lp": _logic_module(
+        "sky130_fd_sc_lp__clkinv_lp",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinvlp_2": _logic_module(
+        "sky130_fd_sc_lp__clkinvlp_2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinvlp_4": _logic_module(
+        "sky130_fd_sc_lp__clkinvlp_4",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinvlp_8": _logic_module(
+        "sky130_fd_sc_lp__clkinvlp_8",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__clkinvlp_16": _logic_module(
+        "sky130_fd_sc_lp__clkinvlp_16",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__conb_0": _logic_module(
+        "sky130_fd_sc_lp__conb_0",
+        "Low Power",
+        ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"],
+    ),
+    "sky130_fd_sc_lp__conb_1": _logic_module(
+        "sky130_fd_sc_lp__conb_1",
+        "Low Power",
+        ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"],
+    ),
+    "sky130_fd_sc_lp__decap_3": _logic_module(
+        "sky130_fd_sc_lp__decap_3", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__decap_4": _logic_module(
+        "sky130_fd_sc_lp__decap_4", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__decap_6": _logic_module(
+        "sky130_fd_sc_lp__decap_6", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__decap_8": _logic_module(
+        "sky130_fd_sc_lp__decap_8", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__decap_12": _logic_module(
+        "sky130_fd_sc_lp__decap_12", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__decapkapwr_3": _logic_module(
+        "sky130_fd_sc_lp__decapkapwr_3",
+        "Low Power",
+        ["KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_lp__decapkapwr_4": _logic_module(
+        "sky130_fd_sc_lp__decapkapwr_4",
+        "Low Power",
+        ["KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_lp__decapkapwr_6": _logic_module(
+        "sky130_fd_sc_lp__decapkapwr_6",
+        "Low Power",
+        ["KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_lp__decapkapwr_8": _logic_module(
+        "sky130_fd_sc_lp__decapkapwr_8",
+        "Low Power",
+        ["KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_lp__decapkapwr_12": _logic_module(
+        "sky130_fd_sc_lp__decapkapwr_12",
+        "Low Power",
+        ["KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_lp__dfbbn_1": _logic_module(
+        "sky130_fd_sc_lp__dfbbn_1",
+        "Low Power",
+        ["CLK_N", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfbbn_2": _logic_module(
+        "sky130_fd_sc_lp__dfbbn_2",
+        "Low Power",
+        ["CLK_N", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfbbp_1": _logic_module(
+        "sky130_fd_sc_lp__dfbbp_1",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfrbp_1": _logic_module(
+        "sky130_fd_sc_lp__dfrbp_1",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfrbp_2": _logic_module(
+        "sky130_fd_sc_lp__dfrbp_2",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfrbp_lp": _logic_module(
+        "sky130_fd_sc_lp__dfrbp_lp",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfrtn_1": _logic_module(
+        "sky130_fd_sc_lp__dfrtn_1",
+        "Low Power",
+        ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfrtp_1": _logic_module(
+        "sky130_fd_sc_lp__dfrtp_1",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfrtp_2": _logic_module(
+        "sky130_fd_sc_lp__dfrtp_2",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfrtp_4": _logic_module(
+        "sky130_fd_sc_lp__dfrtp_4",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfsbp_1": _logic_module(
+        "sky130_fd_sc_lp__dfsbp_1",
+        "Low Power",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfsbp_2": _logic_module(
+        "sky130_fd_sc_lp__dfsbp_2",
+        "Low Power",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfsbp_lp": _logic_module(
+        "sky130_fd_sc_lp__dfsbp_lp",
+        "Low Power",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfstp_1": _logic_module(
+        "sky130_fd_sc_lp__dfstp_1",
+        "Low Power",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfstp_2": _logic_module(
+        "sky130_fd_sc_lp__dfstp_2",
+        "Low Power",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfstp_4": _logic_module(
+        "sky130_fd_sc_lp__dfstp_4",
+        "Low Power",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfstp_lp": _logic_module(
+        "sky130_fd_sc_lp__dfstp_lp",
+        "Low Power",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfxbp_1": _logic_module(
+        "sky130_fd_sc_lp__dfxbp_1",
+        "Low Power",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfxbp_2": _logic_module(
+        "sky130_fd_sc_lp__dfxbp_2",
+        "Low Power",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfxbp_lp": _logic_module(
+        "sky130_fd_sc_lp__dfxbp_lp",
+        "Low Power",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dfxtp_1": _logic_module(
+        "sky130_fd_sc_lp__dfxtp_1",
+        "Low Power",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfxtp_2": _logic_module(
+        "sky130_fd_sc_lp__dfxtp_2",
+        "Low Power",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfxtp_4": _logic_module(
+        "sky130_fd_sc_lp__dfxtp_4",
+        "Low Power",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dfxtp_lp": _logic_module(
+        "sky130_fd_sc_lp__dfxtp_lp",
+        "Low Power",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__diode_0": _logic_module(
+        "sky130_fd_sc_lp__diode_0", "Low Power", ["DIODE", "VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__diode_1": _logic_module(
+        "sky130_fd_sc_lp__diode_1", "Low Power", ["DIODE", "VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__dlclkp_1": _logic_module(
+        "sky130_fd_sc_lp__dlclkp_1",
+        "Low Power",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_lp__dlclkp_2": _logic_module(
+        "sky130_fd_sc_lp__dlclkp_2",
+        "Low Power",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_lp__dlclkp_4": _logic_module(
+        "sky130_fd_sc_lp__dlclkp_4",
+        "Low Power",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_lp__dlclkp_lp": _logic_module(
+        "sky130_fd_sc_lp__dlclkp_lp",
+        "Low Power",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_lp__dlrbn_1": _logic_module(
+        "sky130_fd_sc_lp__dlrbn_1",
+        "Low Power",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlrbn_2": _logic_module(
+        "sky130_fd_sc_lp__dlrbn_2",
+        "Low Power",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlrbn_lp": _logic_module(
+        "sky130_fd_sc_lp__dlrbn_lp",
+        "Low Power",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlrbp_1": _logic_module(
+        "sky130_fd_sc_lp__dlrbp_1",
+        "Low Power",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlrbp_2": _logic_module(
+        "sky130_fd_sc_lp__dlrbp_2",
+        "Low Power",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlrbp_lp": _logic_module(
+        "sky130_fd_sc_lp__dlrbp_lp",
+        "Low Power",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlrtn_1": _logic_module(
+        "sky130_fd_sc_lp__dlrtn_1",
+        "Low Power",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlrtn_2": _logic_module(
+        "sky130_fd_sc_lp__dlrtn_2",
+        "Low Power",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlrtn_4": _logic_module(
+        "sky130_fd_sc_lp__dlrtn_4",
+        "Low Power",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlrtn_lp": _logic_module(
+        "sky130_fd_sc_lp__dlrtn_lp",
+        "Low Power",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlrtp_1": _logic_module(
+        "sky130_fd_sc_lp__dlrtp_1",
+        "Low Power",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlrtp_2": _logic_module(
+        "sky130_fd_sc_lp__dlrtp_2",
+        "Low Power",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlrtp_4": _logic_module(
+        "sky130_fd_sc_lp__dlrtp_4",
+        "Low Power",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlrtp_lp2": _logic_module(
+        "sky130_fd_sc_lp__dlrtp_lp2",
+        "Low Power",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlrtp_lp": _logic_module(
+        "sky130_fd_sc_lp__dlrtp_lp",
+        "Low Power",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlxbn_1": _logic_module(
+        "sky130_fd_sc_lp__dlxbn_1",
+        "Low Power",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlxbn_2": _logic_module(
+        "sky130_fd_sc_lp__dlxbn_2",
+        "Low Power",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlxbp_1": _logic_module(
+        "sky130_fd_sc_lp__dlxbp_1",
+        "Low Power",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlxbp_lp2": _logic_module(
+        "sky130_fd_sc_lp__dlxbp_lp2",
+        "Low Power",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlxbp_lp": _logic_module(
+        "sky130_fd_sc_lp__dlxbp_lp",
+        "Low Power",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__dlxtn_1": _logic_module(
+        "sky130_fd_sc_lp__dlxtn_1",
+        "Low Power",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlxtn_2": _logic_module(
+        "sky130_fd_sc_lp__dlxtn_2",
+        "Low Power",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlxtn_4": _logic_module(
+        "sky130_fd_sc_lp__dlxtn_4",
+        "Low Power",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlxtp_1": _logic_module(
+        "sky130_fd_sc_lp__dlxtp_1",
+        "Low Power",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlxtp_lp2": _logic_module(
+        "sky130_fd_sc_lp__dlxtp_lp2",
+        "Low Power",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlxtp_lp": _logic_module(
+        "sky130_fd_sc_lp__dlxtp_lp",
+        "Low Power",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__dlybuf4s15kapwr_1": _logic_module(
+        "sky130_fd_sc_lp__dlybuf4s15kapwr_1",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlybuf4s15kapwr_2": _logic_module(
+        "sky130_fd_sc_lp__dlybuf4s15kapwr_2",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlybuf4s18kapwr_1": _logic_module(
+        "sky130_fd_sc_lp__dlybuf4s18kapwr_1",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlybuf4s18kapwr_2": _logic_module(
+        "sky130_fd_sc_lp__dlybuf4s18kapwr_2",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlybuf4s25kapwr_1": _logic_module(
+        "sky130_fd_sc_lp__dlybuf4s25kapwr_1",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlybuf4s25kapwr_2": _logic_module(
+        "sky130_fd_sc_lp__dlybuf4s25kapwr_2",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlybuf4s50kapwr_1": _logic_module(
+        "sky130_fd_sc_lp__dlybuf4s50kapwr_1",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlybuf4s50kapwr_2": _logic_module(
+        "sky130_fd_sc_lp__dlybuf4s50kapwr_2",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlygate4s15_1": _logic_module(
+        "sky130_fd_sc_lp__dlygate4s15_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlygate4s18_1": _logic_module(
+        "sky130_fd_sc_lp__dlygate4s18_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlygate4s50_1": _logic_module(
+        "sky130_fd_sc_lp__dlygate4s50_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlymetal6s2s_1": _logic_module(
+        "sky130_fd_sc_lp__dlymetal6s2s_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlymetal6s4s_1": _logic_module(
+        "sky130_fd_sc_lp__dlymetal6s4s_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__dlymetal6s6s_1": _logic_module(
+        "sky130_fd_sc_lp__dlymetal6s6s_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__ebufn_1": _logic_module(
+        "sky130_fd_sc_lp__ebufn_1",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__ebufn_2": _logic_module(
+        "sky130_fd_sc_lp__ebufn_2",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__ebufn_4": _logic_module(
+        "sky130_fd_sc_lp__ebufn_4",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__ebufn_8": _logic_module(
+        "sky130_fd_sc_lp__ebufn_8",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__ebufn_lp2": _logic_module(
+        "sky130_fd_sc_lp__ebufn_lp2",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__ebufn_lp": _logic_module(
+        "sky130_fd_sc_lp__ebufn_lp",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__edfxbp_1": _logic_module(
+        "sky130_fd_sc_lp__edfxbp_1",
+        "Low Power",
+        ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__einvn_0": _logic_module(
+        "sky130_fd_sc_lp__einvn_0",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvn_1": _logic_module(
+        "sky130_fd_sc_lp__einvn_1",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvn_2": _logic_module(
+        "sky130_fd_sc_lp__einvn_2",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvn_4": _logic_module(
+        "sky130_fd_sc_lp__einvn_4",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvn_8": _logic_module(
+        "sky130_fd_sc_lp__einvn_8",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvn_lp": _logic_module(
+        "sky130_fd_sc_lp__einvn_lp",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvn_m": _logic_module(
+        "sky130_fd_sc_lp__einvn_m",
+        "Low Power",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvp_0": _logic_module(
+        "sky130_fd_sc_lp__einvp_0",
+        "Low Power",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvp_1": _logic_module(
+        "sky130_fd_sc_lp__einvp_1",
+        "Low Power",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvp_2": _logic_module(
+        "sky130_fd_sc_lp__einvp_2",
+        "Low Power",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvp_4": _logic_module(
+        "sky130_fd_sc_lp__einvp_4",
+        "Low Power",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvp_8": _logic_module(
+        "sky130_fd_sc_lp__einvp_8",
+        "Low Power",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvp_lp": _logic_module(
+        "sky130_fd_sc_lp__einvp_lp",
+        "Low Power",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__einvp_m": _logic_module(
+        "sky130_fd_sc_lp__einvp_m",
+        "Low Power",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_lp__fa_0": _logic_module(
+        "sky130_fd_sc_lp__fa_0",
+        "Low Power",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__fa_1": _logic_module(
+        "sky130_fd_sc_lp__fa_1",
+        "Low Power",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__fa_2": _logic_module(
+        "sky130_fd_sc_lp__fa_2",
+        "Low Power",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__fa_4": _logic_module(
+        "sky130_fd_sc_lp__fa_4",
+        "Low Power",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__fa_lp": _logic_module(
+        "sky130_fd_sc_lp__fa_lp",
+        "Low Power",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__fa_m": _logic_module(
+        "sky130_fd_sc_lp__fa_m",
+        "Low Power",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__fah_1": _logic_module(
+        "sky130_fd_sc_lp__fah_1",
+        "Low Power",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__fahcin_1": _logic_module(
+        "sky130_fd_sc_lp__fahcin_1",
+        "Low Power",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__fahcon_1": _logic_module(
+        "sky130_fd_sc_lp__fahcon_1",
+        "Low Power",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"],
+    ),
+    "sky130_fd_sc_lp__fill_1": _logic_module(
+        "sky130_fd_sc_lp__fill_1", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__fill_2": _logic_module(
+        "sky130_fd_sc_lp__fill_2", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__fill_4": _logic_module(
+        "sky130_fd_sc_lp__fill_4", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__fill_8": _logic_module(
+        "sky130_fd_sc_lp__fill_8", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__ha_0": _logic_module(
+        "sky130_fd_sc_lp__ha_0",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__ha_1": _logic_module(
+        "sky130_fd_sc_lp__ha_1",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__ha_2": _logic_module(
+        "sky130_fd_sc_lp__ha_2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__ha_4": _logic_module(
+        "sky130_fd_sc_lp__ha_4",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__ha_lp": _logic_module(
+        "sky130_fd_sc_lp__ha_lp",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__ha_m": _logic_module(
+        "sky130_fd_sc_lp__ha_m",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_lp__inputiso0n_lp": _logic_module(
+        "sky130_fd_sc_lp__inputiso0n_lp",
+        "Low Power",
+        ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__inputiso0p_lp": _logic_module(
+        "sky130_fd_sc_lp__inputiso0p_lp",
+        "Low Power",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__inputiso1n_lp": _logic_module(
+        "sky130_fd_sc_lp__inputiso1n_lp",
+        "Low Power",
+        ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__inputiso1p_lp": _logic_module(
+        "sky130_fd_sc_lp__inputiso1p_lp",
+        "Low Power",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__inputisolatch_lp": _logic_module(
+        "sky130_fd_sc_lp__inputisolatch_lp",
+        "Low Power",
+        ["D", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__inv_0": _logic_module(
+        "sky130_fd_sc_lp__inv_0", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_lp__inv_1": _logic_module(
+        "sky130_fd_sc_lp__inv_1", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_lp__inv_2": _logic_module(
+        "sky130_fd_sc_lp__inv_2", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_lp__inv_4": _logic_module(
+        "sky130_fd_sc_lp__inv_4", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_lp__inv_8": _logic_module(
+        "sky130_fd_sc_lp__inv_8", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_lp__inv_16": _logic_module(
+        "sky130_fd_sc_lp__inv_16", "Low Power", ["A", "VGND", "VNB", "VPB", "Y"]
+    ),
+    "sky130_fd_sc_lp__inv_lp": _logic_module(
+        "sky130_fd_sc_lp__inv_lp", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_lp__inv_m": _logic_module(
+        "sky130_fd_sc_lp__inv_m", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_lp__invkapwr_1": _logic_module(
+        "sky130_fd_sc_lp__invkapwr_1",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__invkapwr_2": _logic_module(
+        "sky130_fd_sc_lp__invkapwr_2",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__invkapwr_4": _logic_module(
+        "sky130_fd_sc_lp__invkapwr_4",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__invkapwr_8": _logic_module(
+        "sky130_fd_sc_lp__invkapwr_8",
+        "Low Power",
+        ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__invlp_0": _logic_module(
+        "sky130_fd_sc_lp__invlp_0",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__invlp_1": _logic_module(
+        "sky130_fd_sc_lp__invlp_1",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__invlp_2": _logic_module(
+        "sky130_fd_sc_lp__invlp_2",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__invlp_4": _logic_module(
+        "sky130_fd_sc_lp__invlp_4",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__invlp_8": _logic_module(
+        "sky130_fd_sc_lp__invlp_8",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__invlp_m": _logic_module(
+        "sky130_fd_sc_lp__invlp_m",
+        "Low Power",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__iso0n_lp2": _logic_module(
+        "sky130_fd_sc_lp__iso0n_lp2",
+        "Low Power",
+        ["A", "SLEEP_B", "KAGND", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__iso0n_lp": _logic_module(
+        "sky130_fd_sc_lp__iso0n_lp",
+        "Low Power",
+        ["A", "KAGND", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__iso0p_lp2": _logic_module(
+        "sky130_fd_sc_lp__iso0p_lp2",
+        "Low Power",
+        ["A", "SLEEP", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__iso0p_lp": _logic_module(
+        "sky130_fd_sc_lp__iso0p_lp",
+        "Low Power",
+        ["A", "KAPWR", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__iso1n_lp2": _logic_module(
+        "sky130_fd_sc_lp__iso1n_lp2",
+        "Low Power",
+        ["A", "SLEEP_B", "KAGND", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__iso1n_lp": _logic_module(
+        "sky130_fd_sc_lp__iso1n_lp",
+        "Low Power",
+        ["A", "KAGND", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__iso1p_lp2": _logic_module(
+        "sky130_fd_sc_lp__iso1p_lp2",
+        "Low Power",
+        ["A", "SLEEP", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__iso1p_lp": _logic_module(
+        "sky130_fd_sc_lp__iso1p_lp",
+        "Low Power",
+        ["A", "KAPWR", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__isobufsrc_1": _logic_module(
+        "sky130_fd_sc_lp__isobufsrc_1",
+        "Low Power",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__isobufsrc_2": _logic_module(
+        "sky130_fd_sc_lp__isobufsrc_2",
+        "Low Power",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__isobufsrc_4": _logic_module(
+        "sky130_fd_sc_lp__isobufsrc_4",
+        "Low Power",
+        ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__isolatch_lp": _logic_module(
+        "sky130_fd_sc_lp__isolatch_lp",
+        "Low Power",
+        ["D", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__lsbuf_lp": _logic_module(
+        "sky130_fd_sc_lp__lsbuf_lp",
+        "Low Power",
+        ["A", "DESTPWR", "DESTVPB", "VGND", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__lsbufiso0p_lp": _logic_module(
+        "sky130_fd_sc_lp__lsbufiso0p_lp",
+        "Low Power",
+        ["A", "DESTPWR", "DESTVPB", "SLEEP", "VGND", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__lsbufiso1p_lp": _logic_module(
+        "sky130_fd_sc_lp__lsbufiso1p_lp",
+        "Low Power",
+        ["A", "DESTPWR", "DESTVPB", "SLEEP", "VGND", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__maj3_0": _logic_module(
+        "sky130_fd_sc_lp__maj3_0",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__maj3_1": _logic_module(
+        "sky130_fd_sc_lp__maj3_1",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__maj3_2": _logic_module(
+        "sky130_fd_sc_lp__maj3_2",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__maj3_4": _logic_module(
+        "sky130_fd_sc_lp__maj3_4",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__maj3_lp": _logic_module(
+        "sky130_fd_sc_lp__maj3_lp",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__maj3_m": _logic_module(
+        "sky130_fd_sc_lp__maj3_m",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux2_0": _logic_module(
+        "sky130_fd_sc_lp__mux2_0",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux2_1": _logic_module(
+        "sky130_fd_sc_lp__mux2_1",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux2_2": _logic_module(
+        "sky130_fd_sc_lp__mux2_2",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux2_4": _logic_module(
+        "sky130_fd_sc_lp__mux2_4",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux2_8": _logic_module(
+        "sky130_fd_sc_lp__mux2_8",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux2_lp2": _logic_module(
+        "sky130_fd_sc_lp__mux2_lp2",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux2_lp": _logic_module(
+        "sky130_fd_sc_lp__mux2_lp",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux2_m": _logic_module(
+        "sky130_fd_sc_lp__mux2_m",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux2i_0": _logic_module(
+        "sky130_fd_sc_lp__mux2i_0",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__mux2i_1": _logic_module(
+        "sky130_fd_sc_lp__mux2i_1",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__mux2i_2": _logic_module(
+        "sky130_fd_sc_lp__mux2i_2",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__mux2i_4": _logic_module(
+        "sky130_fd_sc_lp__mux2i_4",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__mux2i_lp2": _logic_module(
+        "sky130_fd_sc_lp__mux2i_lp2",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__mux2i_lp": _logic_module(
+        "sky130_fd_sc_lp__mux2i_lp",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__mux2i_m": _logic_module(
+        "sky130_fd_sc_lp__mux2i_m",
+        "Low Power",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__mux4_0": _logic_module(
+        "sky130_fd_sc_lp__mux4_0",
+        "Low Power",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux4_1": _logic_module(
+        "sky130_fd_sc_lp__mux4_1",
+        "Low Power",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux4_2": _logic_module(
+        "sky130_fd_sc_lp__mux4_2",
+        "Low Power",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux4_4": _logic_module(
+        "sky130_fd_sc_lp__mux4_4",
+        "Low Power",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux4_lp": _logic_module(
+        "sky130_fd_sc_lp__mux4_lp",
+        "Low Power",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__mux4_m": _logic_module(
+        "sky130_fd_sc_lp__mux4_m",
+        "Low Power",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__nand2_0": _logic_module(
+        "sky130_fd_sc_lp__nand2_0",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2_1": _logic_module(
+        "sky130_fd_sc_lp__nand2_1",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2_2": _logic_module(
+        "sky130_fd_sc_lp__nand2_2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2_4": _logic_module(
+        "sky130_fd_sc_lp__nand2_4",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2_8": _logic_module(
+        "sky130_fd_sc_lp__nand2_8",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2_lp2": _logic_module(
+        "sky130_fd_sc_lp__nand2_lp2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2_lp": _logic_module(
+        "sky130_fd_sc_lp__nand2_lp",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2_m": _logic_module(
+        "sky130_fd_sc_lp__nand2_m",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2b_1": _logic_module(
+        "sky130_fd_sc_lp__nand2b_1",
+        "Low Power",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2b_2": _logic_module(
+        "sky130_fd_sc_lp__nand2b_2",
+        "Low Power",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2b_4": _logic_module(
+        "sky130_fd_sc_lp__nand2b_4",
+        "Low Power",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2b_lp": _logic_module(
+        "sky130_fd_sc_lp__nand2b_lp",
+        "Low Power",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand2b_m": _logic_module(
+        "sky130_fd_sc_lp__nand2b_m",
+        "Low Power",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3_0": _logic_module(
+        "sky130_fd_sc_lp__nand3_0",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3_1": _logic_module(
+        "sky130_fd_sc_lp__nand3_1",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3_2": _logic_module(
+        "sky130_fd_sc_lp__nand3_2",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3_4": _logic_module(
+        "sky130_fd_sc_lp__nand3_4",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3_lp": _logic_module(
+        "sky130_fd_sc_lp__nand3_lp",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3_m": _logic_module(
+        "sky130_fd_sc_lp__nand3_m",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3b_1": _logic_module(
+        "sky130_fd_sc_lp__nand3b_1",
+        "Low Power",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3b_2": _logic_module(
+        "sky130_fd_sc_lp__nand3b_2",
+        "Low Power",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3b_4": _logic_module(
+        "sky130_fd_sc_lp__nand3b_4",
+        "Low Power",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3b_lp": _logic_module(
+        "sky130_fd_sc_lp__nand3b_lp",
+        "Low Power",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand3b_m": _logic_module(
+        "sky130_fd_sc_lp__nand3b_m",
+        "Low Power",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4_0": _logic_module(
+        "sky130_fd_sc_lp__nand4_0",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4_1": _logic_module(
+        "sky130_fd_sc_lp__nand4_1",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4_2": _logic_module(
+        "sky130_fd_sc_lp__nand4_2",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4_4": _logic_module(
+        "sky130_fd_sc_lp__nand4_4",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4_lp": _logic_module(
+        "sky130_fd_sc_lp__nand4_lp",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4_m": _logic_module(
+        "sky130_fd_sc_lp__nand4_m",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4b_1": _logic_module(
+        "sky130_fd_sc_lp__nand4b_1",
+        "Low Power",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4b_2": _logic_module(
+        "sky130_fd_sc_lp__nand4b_2",
+        "Low Power",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4b_4": _logic_module(
+        "sky130_fd_sc_lp__nand4b_4",
+        "Low Power",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4b_lp": _logic_module(
+        "sky130_fd_sc_lp__nand4b_lp",
+        "Low Power",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4b_m": _logic_module(
+        "sky130_fd_sc_lp__nand4b_m",
+        "Low Power",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4bb_1": _logic_module(
+        "sky130_fd_sc_lp__nand4bb_1",
+        "Low Power",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4bb_2": _logic_module(
+        "sky130_fd_sc_lp__nand4bb_2",
+        "Low Power",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4bb_4": _logic_module(
+        "sky130_fd_sc_lp__nand4bb_4",
+        "Low Power",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4bb_lp": _logic_module(
+        "sky130_fd_sc_lp__nand4bb_lp",
+        "Low Power",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nand4bb_m": _logic_module(
+        "sky130_fd_sc_lp__nand4bb_m",
+        "Low Power",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2_0": _logic_module(
+        "sky130_fd_sc_lp__nor2_0",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2_1": _logic_module(
+        "sky130_fd_sc_lp__nor2_1",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2_2": _logic_module(
+        "sky130_fd_sc_lp__nor2_2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2_4": _logic_module(
+        "sky130_fd_sc_lp__nor2_4",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2_8": _logic_module(
+        "sky130_fd_sc_lp__nor2_8",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2_lp2": _logic_module(
+        "sky130_fd_sc_lp__nor2_lp2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2_lp": _logic_module(
+        "sky130_fd_sc_lp__nor2_lp", "Low Power", ["A", "B", "VNB", "VPB", "Y"]
+    ),
+    "sky130_fd_sc_lp__nor2_m": _logic_module(
+        "sky130_fd_sc_lp__nor2_m",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2b_1": _logic_module(
+        "sky130_fd_sc_lp__nor2b_1",
+        "Low Power",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2b_2": _logic_module(
+        "sky130_fd_sc_lp__nor2b_2",
+        "Low Power",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2b_4": _logic_module(
+        "sky130_fd_sc_lp__nor2b_4",
+        "Low Power",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2b_lp": _logic_module(
+        "sky130_fd_sc_lp__nor2b_lp",
+        "Low Power",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor2b_m": _logic_module(
+        "sky130_fd_sc_lp__nor2b_m",
+        "Low Power",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3_0": _logic_module(
+        "sky130_fd_sc_lp__nor3_0",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3_1": _logic_module(
+        "sky130_fd_sc_lp__nor3_1",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3_2": _logic_module(
+        "sky130_fd_sc_lp__nor3_2",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3_4": _logic_module(
+        "sky130_fd_sc_lp__nor3_4",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3_lp": _logic_module(
+        "sky130_fd_sc_lp__nor3_lp",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3_m": _logic_module(
+        "sky130_fd_sc_lp__nor3_m",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3b_1": _logic_module(
+        "sky130_fd_sc_lp__nor3b_1",
+        "Low Power",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3b_2": _logic_module(
+        "sky130_fd_sc_lp__nor3b_2",
+        "Low Power",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3b_4": _logic_module(
+        "sky130_fd_sc_lp__nor3b_4",
+        "Low Power",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3b_lp": _logic_module(
+        "sky130_fd_sc_lp__nor3b_lp",
+        "Low Power",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor3b_m": _logic_module(
+        "sky130_fd_sc_lp__nor3b_m",
+        "Low Power",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4_0": _logic_module(
+        "sky130_fd_sc_lp__nor4_0",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4_1": _logic_module(
+        "sky130_fd_sc_lp__nor4_1",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4_2": _logic_module(
+        "sky130_fd_sc_lp__nor4_2",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4_4": _logic_module(
+        "sky130_fd_sc_lp__nor4_4",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4_lp": _logic_module(
+        "sky130_fd_sc_lp__nor4_lp",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4_m": _logic_module(
+        "sky130_fd_sc_lp__nor4_m",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4b_1": _logic_module(
+        "sky130_fd_sc_lp__nor4b_1",
+        "Low Power",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4b_2": _logic_module(
+        "sky130_fd_sc_lp__nor4b_2",
+        "Low Power",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4b_4": _logic_module(
+        "sky130_fd_sc_lp__nor4b_4",
+        "Low Power",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4b_lp": _logic_module(
+        "sky130_fd_sc_lp__nor4b_lp",
+        "Low Power",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4b_m": _logic_module(
+        "sky130_fd_sc_lp__nor4b_m",
+        "Low Power",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4bb_1": _logic_module(
+        "sky130_fd_sc_lp__nor4bb_1",
+        "Low Power",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4bb_2": _logic_module(
+        "sky130_fd_sc_lp__nor4bb_2",
+        "Low Power",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4bb_4": _logic_module(
+        "sky130_fd_sc_lp__nor4bb_4",
+        "Low Power",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4bb_lp": _logic_module(
+        "sky130_fd_sc_lp__nor4bb_lp",
+        "Low Power",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__nor4bb_m": _logic_module(
+        "sky130_fd_sc_lp__nor4bb_m",
+        "Low Power",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2bb2a_0": _logic_module(
+        "sky130_fd_sc_lp__o2bb2a_0",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2bb2a_1": _logic_module(
+        "sky130_fd_sc_lp__o2bb2a_1",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2bb2a_2": _logic_module(
+        "sky130_fd_sc_lp__o2bb2a_2",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2bb2a_4": _logic_module(
+        "sky130_fd_sc_lp__o2bb2a_4",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2bb2a_lp": _logic_module(
+        "sky130_fd_sc_lp__o2bb2a_lp",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2bb2a_m": _logic_module(
+        "sky130_fd_sc_lp__o2bb2a_m",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2bb2ai_0": _logic_module(
+        "sky130_fd_sc_lp__o2bb2ai_0",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2bb2ai_1": _logic_module(
+        "sky130_fd_sc_lp__o2bb2ai_1",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2bb2ai_2": _logic_module(
+        "sky130_fd_sc_lp__o2bb2ai_2",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2bb2ai_4": _logic_module(
+        "sky130_fd_sc_lp__o2bb2ai_4",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2bb2ai_lp": _logic_module(
+        "sky130_fd_sc_lp__o2bb2ai_lp",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2bb2ai_m": _logic_module(
+        "sky130_fd_sc_lp__o2bb2ai_m",
+        "Low Power",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21a_0": _logic_module(
+        "sky130_fd_sc_lp__o21a_0",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21a_1": _logic_module(
+        "sky130_fd_sc_lp__o21a_1",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21a_2": _logic_module(
+        "sky130_fd_sc_lp__o21a_2",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21a_4": _logic_module(
+        "sky130_fd_sc_lp__o21a_4",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21a_lp": _logic_module(
+        "sky130_fd_sc_lp__o21a_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21a_m": _logic_module(
+        "sky130_fd_sc_lp__o21a_m",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21ai_0": _logic_module(
+        "sky130_fd_sc_lp__o21ai_0",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21ai_1": _logic_module(
+        "sky130_fd_sc_lp__o21ai_1",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21ai_2": _logic_module(
+        "sky130_fd_sc_lp__o21ai_2",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21ai_4": _logic_module(
+        "sky130_fd_sc_lp__o21ai_4",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21ai_lp": _logic_module(
+        "sky130_fd_sc_lp__o21ai_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21ai_m": _logic_module(
+        "sky130_fd_sc_lp__o21ai_m",
+        "Low Power",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21ba_0": _logic_module(
+        "sky130_fd_sc_lp__o21ba_0",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21ba_1": _logic_module(
+        "sky130_fd_sc_lp__o21ba_1",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21ba_2": _logic_module(
+        "sky130_fd_sc_lp__o21ba_2",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21ba_4": _logic_module(
+        "sky130_fd_sc_lp__o21ba_4",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21ba_lp": _logic_module(
+        "sky130_fd_sc_lp__o21ba_lp",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21ba_m": _logic_module(
+        "sky130_fd_sc_lp__o21ba_m",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o21bai_0": _logic_module(
+        "sky130_fd_sc_lp__o21bai_0",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21bai_1": _logic_module(
+        "sky130_fd_sc_lp__o21bai_1",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21bai_2": _logic_module(
+        "sky130_fd_sc_lp__o21bai_2",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21bai_4": _logic_module(
+        "sky130_fd_sc_lp__o21bai_4",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21bai_lp": _logic_module(
+        "sky130_fd_sc_lp__o21bai_lp",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o21bai_m": _logic_module(
+        "sky130_fd_sc_lp__o21bai_m",
+        "Low Power",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o22a_0": _logic_module(
+        "sky130_fd_sc_lp__o22a_0",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o22a_1": _logic_module(
+        "sky130_fd_sc_lp__o22a_1",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o22a_2": _logic_module(
+        "sky130_fd_sc_lp__o22a_2",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o22a_4": _logic_module(
+        "sky130_fd_sc_lp__o22a_4",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o22a_lp": _logic_module(
+        "sky130_fd_sc_lp__o22a_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o22a_m": _logic_module(
+        "sky130_fd_sc_lp__o22a_m",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o22ai_0": _logic_module(
+        "sky130_fd_sc_lp__o22ai_0",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o22ai_1": _logic_module(
+        "sky130_fd_sc_lp__o22ai_1",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o22ai_2": _logic_module(
+        "sky130_fd_sc_lp__o22ai_2",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o22ai_4": _logic_module(
+        "sky130_fd_sc_lp__o22ai_4",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o22ai_lp": _logic_module(
+        "sky130_fd_sc_lp__o22ai_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o22ai_m": _logic_module(
+        "sky130_fd_sc_lp__o22ai_m",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o31a_0": _logic_module(
+        "sky130_fd_sc_lp__o31a_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o31a_1": _logic_module(
+        "sky130_fd_sc_lp__o31a_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o31a_2": _logic_module(
+        "sky130_fd_sc_lp__o31a_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o31a_4": _logic_module(
+        "sky130_fd_sc_lp__o31a_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o31a_lp": _logic_module(
+        "sky130_fd_sc_lp__o31a_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o31a_m": _logic_module(
+        "sky130_fd_sc_lp__o31a_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o31ai_0": _logic_module(
+        "sky130_fd_sc_lp__o31ai_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o31ai_1": _logic_module(
+        "sky130_fd_sc_lp__o31ai_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o31ai_2": _logic_module(
+        "sky130_fd_sc_lp__o31ai_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o31ai_4": _logic_module(
+        "sky130_fd_sc_lp__o31ai_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o31ai_lp": _logic_module(
+        "sky130_fd_sc_lp__o31ai_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o31ai_m": _logic_module(
+        "sky130_fd_sc_lp__o31ai_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o32a_0": _logic_module(
+        "sky130_fd_sc_lp__o32a_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o32a_1": _logic_module(
+        "sky130_fd_sc_lp__o32a_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o32a_2": _logic_module(
+        "sky130_fd_sc_lp__o32a_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o32a_4": _logic_module(
+        "sky130_fd_sc_lp__o32a_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o32a_lp": _logic_module(
+        "sky130_fd_sc_lp__o32a_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o32a_m": _logic_module(
+        "sky130_fd_sc_lp__o32a_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o32ai_0": _logic_module(
+        "sky130_fd_sc_lp__o32ai_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o32ai_1": _logic_module(
+        "sky130_fd_sc_lp__o32ai_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o32ai_2": _logic_module(
+        "sky130_fd_sc_lp__o32ai_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o32ai_4": _logic_module(
+        "sky130_fd_sc_lp__o32ai_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o32ai_lp": _logic_module(
+        "sky130_fd_sc_lp__o32ai_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o32ai_m": _logic_module(
+        "sky130_fd_sc_lp__o32ai_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o41a_0": _logic_module(
+        "sky130_fd_sc_lp__o41a_0",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o41a_1": _logic_module(
+        "sky130_fd_sc_lp__o41a_1",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o41a_2": _logic_module(
+        "sky130_fd_sc_lp__o41a_2",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o41a_4": _logic_module(
+        "sky130_fd_sc_lp__o41a_4",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o41a_lp": _logic_module(
+        "sky130_fd_sc_lp__o41a_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o41a_m": _logic_module(
+        "sky130_fd_sc_lp__o41a_m",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o41ai_0": _logic_module(
+        "sky130_fd_sc_lp__o41ai_0",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o41ai_1": _logic_module(
+        "sky130_fd_sc_lp__o41ai_1",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o41ai_2": _logic_module(
+        "sky130_fd_sc_lp__o41ai_2",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o41ai_4": _logic_module(
+        "sky130_fd_sc_lp__o41ai_4",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o41ai_lp": _logic_module(
+        "sky130_fd_sc_lp__o41ai_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o41ai_m": _logic_module(
+        "sky130_fd_sc_lp__o41ai_m",
+        "Low Power",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o211a_0": _logic_module(
+        "sky130_fd_sc_lp__o211a_0",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o211a_1": _logic_module(
+        "sky130_fd_sc_lp__o211a_1",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o211a_2": _logic_module(
+        "sky130_fd_sc_lp__o211a_2",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o211a_4": _logic_module(
+        "sky130_fd_sc_lp__o211a_4",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o211a_lp": _logic_module(
+        "sky130_fd_sc_lp__o211a_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o211a_m": _logic_module(
+        "sky130_fd_sc_lp__o211a_m",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o211ai_0": _logic_module(
+        "sky130_fd_sc_lp__o211ai_0",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o211ai_1": _logic_module(
+        "sky130_fd_sc_lp__o211ai_1",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o211ai_2": _logic_module(
+        "sky130_fd_sc_lp__o211ai_2",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o211ai_4": _logic_module(
+        "sky130_fd_sc_lp__o211ai_4",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o211ai_lp": _logic_module(
+        "sky130_fd_sc_lp__o211ai_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o211ai_m": _logic_module(
+        "sky130_fd_sc_lp__o211ai_m",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o221a_0": _logic_module(
+        "sky130_fd_sc_lp__o221a_0",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o221a_1": _logic_module(
+        "sky130_fd_sc_lp__o221a_1",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o221a_2": _logic_module(
+        "sky130_fd_sc_lp__o221a_2",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o221a_4": _logic_module(
+        "sky130_fd_sc_lp__o221a_4",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o221a_lp": _logic_module(
+        "sky130_fd_sc_lp__o221a_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o221a_m": _logic_module(
+        "sky130_fd_sc_lp__o221a_m",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o221ai_0": _logic_module(
+        "sky130_fd_sc_lp__o221ai_0",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o221ai_1": _logic_module(
+        "sky130_fd_sc_lp__o221ai_1",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o221ai_2": _logic_module(
+        "sky130_fd_sc_lp__o221ai_2",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o221ai_4": _logic_module(
+        "sky130_fd_sc_lp__o221ai_4",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o221ai_lp": _logic_module(
+        "sky130_fd_sc_lp__o221ai_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o221ai_m": _logic_module(
+        "sky130_fd_sc_lp__o221ai_m",
+        "Low Power",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o311a_0": _logic_module(
+        "sky130_fd_sc_lp__o311a_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o311a_1": _logic_module(
+        "sky130_fd_sc_lp__o311a_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o311a_2": _logic_module(
+        "sky130_fd_sc_lp__o311a_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o311a_4": _logic_module(
+        "sky130_fd_sc_lp__o311a_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o311a_lp": _logic_module(
+        "sky130_fd_sc_lp__o311a_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o311a_m": _logic_module(
+        "sky130_fd_sc_lp__o311a_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o311ai_0": _logic_module(
+        "sky130_fd_sc_lp__o311ai_0",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o311ai_1": _logic_module(
+        "sky130_fd_sc_lp__o311ai_1",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o311ai_2": _logic_module(
+        "sky130_fd_sc_lp__o311ai_2",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o311ai_4": _logic_module(
+        "sky130_fd_sc_lp__o311ai_4",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o311ai_lp": _logic_module(
+        "sky130_fd_sc_lp__o311ai_lp",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o311ai_m": _logic_module(
+        "sky130_fd_sc_lp__o311ai_m",
+        "Low Power",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2111a_0": _logic_module(
+        "sky130_fd_sc_lp__o2111a_0",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2111a_1": _logic_module(
+        "sky130_fd_sc_lp__o2111a_1",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2111a_2": _logic_module(
+        "sky130_fd_sc_lp__o2111a_2",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2111a_4": _logic_module(
+        "sky130_fd_sc_lp__o2111a_4",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2111a_lp": _logic_module(
+        "sky130_fd_sc_lp__o2111a_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2111a_m": _logic_module(
+        "sky130_fd_sc_lp__o2111a_m",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__o2111ai_0": _logic_module(
+        "sky130_fd_sc_lp__o2111ai_0",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2111ai_1": _logic_module(
+        "sky130_fd_sc_lp__o2111ai_1",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2111ai_2": _logic_module(
+        "sky130_fd_sc_lp__o2111ai_2",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2111ai_4": _logic_module(
+        "sky130_fd_sc_lp__o2111ai_4",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2111ai_lp": _logic_module(
+        "sky130_fd_sc_lp__o2111ai_lp",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__o2111ai_m": _logic_module(
+        "sky130_fd_sc_lp__o2111ai_m",
+        "Low Power",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__or2_0": _logic_module(
+        "sky130_fd_sc_lp__or2_0",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2_1": _logic_module(
+        "sky130_fd_sc_lp__or2_1",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2_2": _logic_module(
+        "sky130_fd_sc_lp__or2_2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2_4": _logic_module(
+        "sky130_fd_sc_lp__or2_4",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2_lp2": _logic_module(
+        "sky130_fd_sc_lp__or2_lp2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2_lp": _logic_module(
+        "sky130_fd_sc_lp__or2_lp",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2_m": _logic_module(
+        "sky130_fd_sc_lp__or2_m",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2b_1": _logic_module(
+        "sky130_fd_sc_lp__or2b_1",
+        "Low Power",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2b_2": _logic_module(
+        "sky130_fd_sc_lp__or2b_2",
+        "Low Power",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2b_4": _logic_module(
+        "sky130_fd_sc_lp__or2b_4",
+        "Low Power",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2b_lp": _logic_module(
+        "sky130_fd_sc_lp__or2b_lp",
+        "Low Power",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or2b_m": _logic_module(
+        "sky130_fd_sc_lp__or2b_m",
+        "Low Power",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3_0": _logic_module(
+        "sky130_fd_sc_lp__or3_0",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3_1": _logic_module(
+        "sky130_fd_sc_lp__or3_1",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3_2": _logic_module(
+        "sky130_fd_sc_lp__or3_2",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3_4": _logic_module(
+        "sky130_fd_sc_lp__or3_4",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3_lp": _logic_module(
+        "sky130_fd_sc_lp__or3_lp",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3_m": _logic_module(
+        "sky130_fd_sc_lp__or3_m",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3b_1": _logic_module(
+        "sky130_fd_sc_lp__or3b_1",
+        "Low Power",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3b_2": _logic_module(
+        "sky130_fd_sc_lp__or3b_2",
+        "Low Power",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3b_4": _logic_module(
+        "sky130_fd_sc_lp__or3b_4",
+        "Low Power",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3b_lp": _logic_module(
+        "sky130_fd_sc_lp__or3b_lp",
+        "Low Power",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or3b_m": _logic_module(
+        "sky130_fd_sc_lp__or3b_m",
+        "Low Power",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4_0": _logic_module(
+        "sky130_fd_sc_lp__or4_0",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4_1": _logic_module(
+        "sky130_fd_sc_lp__or4_1",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4_2": _logic_module(
+        "sky130_fd_sc_lp__or4_2",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4_4": _logic_module(
+        "sky130_fd_sc_lp__or4_4",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4_lp": _logic_module(
+        "sky130_fd_sc_lp__or4_lp",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4_m": _logic_module(
+        "sky130_fd_sc_lp__or4_m",
+        "Low Power",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4b_1": _logic_module(
+        "sky130_fd_sc_lp__or4b_1",
+        "Low Power",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4b_2": _logic_module(
+        "sky130_fd_sc_lp__or4b_2",
+        "Low Power",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4b_4": _logic_module(
+        "sky130_fd_sc_lp__or4b_4",
+        "Low Power",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4b_lp": _logic_module(
+        "sky130_fd_sc_lp__or4b_lp",
+        "Low Power",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4b_m": _logic_module(
+        "sky130_fd_sc_lp__or4b_m",
+        "Low Power",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4bb_1": _logic_module(
+        "sky130_fd_sc_lp__or4bb_1",
+        "Low Power",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4bb_2": _logic_module(
+        "sky130_fd_sc_lp__or4bb_2",
+        "Low Power",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4bb_4": _logic_module(
+        "sky130_fd_sc_lp__or4bb_4",
+        "Low Power",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4bb_lp": _logic_module(
+        "sky130_fd_sc_lp__or4bb_lp",
+        "Low Power",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__or4bb_m": _logic_module(
+        "sky130_fd_sc_lp__or4bb_m",
+        "Low Power",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__sdfbbn_1": _logic_module(
+        "sky130_fd_sc_lp__sdfbbn_1",
+        "Low Power",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_lp__sdfbbn_2": _logic_module(
+        "sky130_fd_sc_lp__sdfbbn_2",
+        "Low Power",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_lp__sdfbbp_1": _logic_module(
+        "sky130_fd_sc_lp__sdfbbp_1",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "SET_B", "VNB", "VPB", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sdfrbp_1": _logic_module(
+        "sky130_fd_sc_lp__sdfrbp_1",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sdfrbp_2": _logic_module(
+        "sky130_fd_sc_lp__sdfrbp_2",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sdfrbp_lp": _logic_module(
+        "sky130_fd_sc_lp__sdfrbp_lp",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sdfrtn_1": _logic_module(
+        "sky130_fd_sc_lp__sdfrtn_1",
+        "Low Power",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfrtp_1": _logic_module(
+        "sky130_fd_sc_lp__sdfrtp_1",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfrtp_2": _logic_module(
+        "sky130_fd_sc_lp__sdfrtp_2",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfrtp_4": _logic_module(
+        "sky130_fd_sc_lp__sdfrtp_4",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfrtp_lp2": _logic_module(
+        "sky130_fd_sc_lp__sdfrtp_lp2",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfrtp_ov2": _logic_module(
+        "sky130_fd_sc_lp__sdfrtp_ov2",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfsbp_1": _logic_module(
+        "sky130_fd_sc_lp__sdfsbp_1",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sdfsbp_2": _logic_module(
+        "sky130_fd_sc_lp__sdfsbp_2",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sdfsbp_lp": _logic_module(
+        "sky130_fd_sc_lp__sdfsbp_lp",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sdfstp_1": _logic_module(
+        "sky130_fd_sc_lp__sdfstp_1",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfstp_2": _logic_module(
+        "sky130_fd_sc_lp__sdfstp_2",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfstp_4": _logic_module(
+        "sky130_fd_sc_lp__sdfstp_4",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfstp_lp": _logic_module(
+        "sky130_fd_sc_lp__sdfstp_lp",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfxbp_1": _logic_module(
+        "sky130_fd_sc_lp__sdfxbp_1",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sdfxbp_2": _logic_module(
+        "sky130_fd_sc_lp__sdfxbp_2",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sdfxbp_lp": _logic_module(
+        "sky130_fd_sc_lp__sdfxbp_lp",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sdfxtp_1": _logic_module(
+        "sky130_fd_sc_lp__sdfxtp_1",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfxtp_2": _logic_module(
+        "sky130_fd_sc_lp__sdfxtp_2",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfxtp_4": _logic_module(
+        "sky130_fd_sc_lp__sdfxtp_4",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdfxtp_lp": _logic_module(
+        "sky130_fd_sc_lp__sdfxtp_lp",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sdlclkp_1": _logic_module(
+        "sky130_fd_sc_lp__sdlclkp_1",
+        "Low Power",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_lp__sdlclkp_2": _logic_module(
+        "sky130_fd_sc_lp__sdlclkp_2",
+        "Low Power",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_lp__sdlclkp_4": _logic_module(
+        "sky130_fd_sc_lp__sdlclkp_4",
+        "Low Power",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_lp__sdlclkp_lp": _logic_module(
+        "sky130_fd_sc_lp__sdlclkp_lp",
+        "Low Power",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_lp__sleep_pargate_plv_7": _logic_module(
+        "sky130_fd_sc_lp__sleep_pargate_plv_7",
+        "Low Power",
+        ["VIRTPWR", "VPWR", "SLEEP", "VPB"],
+    ),
+    "sky130_fd_sc_lp__sleep_pargate_plv_14": _logic_module(
+        "sky130_fd_sc_lp__sleep_pargate_plv_14",
+        "Low Power",
+        ["VIRTPWR", "VPWR", "SLEEP", "VPB"],
+    ),
+    "sky130_fd_sc_lp__sleep_pargate_plv_21": _logic_module(
+        "sky130_fd_sc_lp__sleep_pargate_plv_21",
+        "Low Power",
+        ["VIRTPWR", "VPWR", "SLEEP", "VPB"],
+    ),
+    "sky130_fd_sc_lp__sleep_pargate_plv_28": _logic_module(
+        "sky130_fd_sc_lp__sleep_pargate_plv_28",
+        "Low Power",
+        ["VIRTPWR", "VPWR", "SLEEP", "VPB"],
+    ),
+    "sky130_fd_sc_lp__sleep_sergate_plv_14": _logic_module(
+        "sky130_fd_sc_lp__sleep_sergate_plv_14",
+        "Low Power",
+        ["VIRTPWR", "VPWR", "SLEEP", "VPB"],
+    ),
+    "sky130_fd_sc_lp__sleep_sergate_plv_21": _logic_module(
+        "sky130_fd_sc_lp__sleep_sergate_plv_21",
+        "Low Power",
+        ["VIRTPWR", "VPWR", "SLEEP", "VPB"],
+    ),
+    "sky130_fd_sc_lp__sleep_sergate_plv_28": _logic_module(
+        "sky130_fd_sc_lp__sleep_sergate_plv_28",
+        "Low Power",
+        ["VIRTPWR", "VPWR", "SLEEP", "VPB"],
+    ),
+    "sky130_fd_sc_lp__srdlrtp_1": _logic_module(
+        "sky130_fd_sc_lp__srdlrtp_1",
+        "Low Power",
+        ["D", "GATE", "RESET_B", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_lp__srdlstp_1": _logic_module(
+        "sky130_fd_sc_lp__srdlstp_1",
+        "Low Power",
+        ["D", "GATE", "SET_B", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__srdlxtp_1": _logic_module(
+        "sky130_fd_sc_lp__srdlxtp_1",
+        "Low Power",
+        ["D", "GATE", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_lp__sregrbp_1": _logic_module(
+        "sky130_fd_sc_lp__sregrbp_1",
+        "Low Power",
+        ["ASYNC", "CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__sregsbp_1": _logic_module(
+        "sky130_fd_sc_lp__sregsbp_1",
+        "Low Power",
+        ["ASYNC", "CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_lp__srsdfrtn_1": _logic_module(
+        "sky130_fd_sc_lp__srsdfrtn_1",
+        "Low Power",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SLEEP_B", "KAPWR", "VGND", "VNB"],
+    ),
+    "sky130_fd_sc_lp__srsdfrtp_1": _logic_module(
+        "sky130_fd_sc_lp__srsdfrtp_1",
+        "Low Power",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB"],
+    ),
+    "sky130_fd_sc_lp__srsdfstp_1": _logic_module(
+        "sky130_fd_sc_lp__srsdfstp_1",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB"],
+    ),
+    "sky130_fd_sc_lp__srsdfxtp_1": _logic_module(
+        "sky130_fd_sc_lp__srsdfxtp_1",
+        "Low Power",
+        ["CLK", "D", "SCD", "SCE", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_lp__tap_1": _logic_module(
+        "sky130_fd_sc_lp__tap_1", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__tap_2": _logic_module(
+        "sky130_fd_sc_lp__tap_2", "Low Power", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__tapvgnd2_1": _logic_module(
+        "sky130_fd_sc_lp__tapvgnd2_1", "Low Power", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__tapvgnd_1": _logic_module(
+        "sky130_fd_sc_lp__tapvgnd_1", "Low Power", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__tapvpwrvgnd_1": _logic_module(
+        "sky130_fd_sc_lp__tapvpwrvgnd_1", "Low Power", ["VGND", "VPWR"]
+    ),
+    "sky130_fd_sc_lp__xnor2_0": _logic_module(
+        "sky130_fd_sc_lp__xnor2_0",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__xnor2_1": _logic_module(
+        "sky130_fd_sc_lp__xnor2_1",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__xnor2_2": _logic_module(
+        "sky130_fd_sc_lp__xnor2_2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__xnor2_4": _logic_module(
+        "sky130_fd_sc_lp__xnor2_4",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__xnor2_lp": _logic_module(
+        "sky130_fd_sc_lp__xnor2_lp",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__xnor2_m": _logic_module(
+        "sky130_fd_sc_lp__xnor2_m",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_lp__xnor3_1": _logic_module(
+        "sky130_fd_sc_lp__xnor3_1",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__xnor3_lp": _logic_module(
+        "sky130_fd_sc_lp__xnor3_lp",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__xor2_0": _logic_module(
+        "sky130_fd_sc_lp__xor2_0",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__xor2_1": _logic_module(
+        "sky130_fd_sc_lp__xor2_1",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__xor2_2": _logic_module(
+        "sky130_fd_sc_lp__xor2_2",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__xor2_4": _logic_module(
+        "sky130_fd_sc_lp__xor2_4",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__xor2_lp": _logic_module(
+        "sky130_fd_sc_lp__xor2_lp",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__xor2_m": _logic_module(
+        "sky130_fd_sc_lp__xor2_m",
+        "Low Power",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__xor3_1": _logic_module(
+        "sky130_fd_sc_lp__xor3_1",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_lp__xor3_lp": _logic_module(
+        "sky130_fd_sc_lp__xor3_lp",
+        "Low Power",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+}
+
+ls: Dict[str, h.ExternalModule] = {
+    "sky130_fd_sc_ls__a2bb2o_1": _logic_module(
+        "sky130_fd_sc_ls__a2bb2o_1",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a2bb2o_2": _logic_module(
+        "sky130_fd_sc_ls__a2bb2o_2",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a2bb2o_4": _logic_module(
+        "sky130_fd_sc_ls__a2bb2o_4",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a2bb2oi_1": _logic_module(
+        "sky130_fd_sc_ls__a2bb2oi_1",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a2bb2oi_2": _logic_module(
+        "sky130_fd_sc_ls__a2bb2oi_2",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a2bb2oi_4": _logic_module(
+        "sky130_fd_sc_ls__a2bb2oi_4",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a21bo_1": _logic_module(
+        "sky130_fd_sc_ls__a21bo_1",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a21bo_2": _logic_module(
+        "sky130_fd_sc_ls__a21bo_2",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a21bo_4": _logic_module(
+        "sky130_fd_sc_ls__a21bo_4",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a21boi_1": _logic_module(
+        "sky130_fd_sc_ls__a21boi_1",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a21boi_2": _logic_module(
+        "sky130_fd_sc_ls__a21boi_2",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a21boi_4": _logic_module(
+        "sky130_fd_sc_ls__a21boi_4",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a21o_1": _logic_module(
+        "sky130_fd_sc_ls__a21o_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a21o_2": _logic_module(
+        "sky130_fd_sc_ls__a21o_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a21o_4": _logic_module(
+        "sky130_fd_sc_ls__a21o_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a21oi_1": _logic_module(
+        "sky130_fd_sc_ls__a21oi_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a21oi_2": _logic_module(
+        "sky130_fd_sc_ls__a21oi_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a21oi_4": _logic_module(
+        "sky130_fd_sc_ls__a21oi_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a22o_1": _logic_module(
+        "sky130_fd_sc_ls__a22o_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a22o_2": _logic_module(
+        "sky130_fd_sc_ls__a22o_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a22o_4": _logic_module(
+        "sky130_fd_sc_ls__a22o_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a22oi_1": _logic_module(
+        "sky130_fd_sc_ls__a22oi_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a22oi_2": _logic_module(
+        "sky130_fd_sc_ls__a22oi_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a22oi_4": _logic_module(
+        "sky130_fd_sc_ls__a22oi_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a31o_1": _logic_module(
+        "sky130_fd_sc_ls__a31o_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a31o_2": _logic_module(
+        "sky130_fd_sc_ls__a31o_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a31o_4": _logic_module(
+        "sky130_fd_sc_ls__a31o_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a31oi_1": _logic_module(
+        "sky130_fd_sc_ls__a31oi_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a31oi_2": _logic_module(
+        "sky130_fd_sc_ls__a31oi_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a31oi_4": _logic_module(
+        "sky130_fd_sc_ls__a31oi_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a32o_1": _logic_module(
+        "sky130_fd_sc_ls__a32o_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a32o_2": _logic_module(
+        "sky130_fd_sc_ls__a32o_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a32o_4": _logic_module(
+        "sky130_fd_sc_ls__a32o_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a32oi_1": _logic_module(
+        "sky130_fd_sc_ls__a32oi_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a32oi_2": _logic_module(
+        "sky130_fd_sc_ls__a32oi_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a32oi_4": _logic_module(
+        "sky130_fd_sc_ls__a32oi_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a41o_1": _logic_module(
+        "sky130_fd_sc_ls__a41o_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a41o_2": _logic_module(
+        "sky130_fd_sc_ls__a41o_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a41o_4": _logic_module(
+        "sky130_fd_sc_ls__a41o_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a41oi_1": _logic_module(
+        "sky130_fd_sc_ls__a41oi_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a41oi_2": _logic_module(
+        "sky130_fd_sc_ls__a41oi_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a41oi_4": _logic_module(
+        "sky130_fd_sc_ls__a41oi_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a211o_1": _logic_module(
+        "sky130_fd_sc_ls__a211o_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a211o_2": _logic_module(
+        "sky130_fd_sc_ls__a211o_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a211o_4": _logic_module(
+        "sky130_fd_sc_ls__a211o_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a211oi_1": _logic_module(
+        "sky130_fd_sc_ls__a211oi_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a211oi_2": _logic_module(
+        "sky130_fd_sc_ls__a211oi_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a211oi_4": _logic_module(
+        "sky130_fd_sc_ls__a211oi_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a221o_1": _logic_module(
+        "sky130_fd_sc_ls__a221o_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a221o_2": _logic_module(
+        "sky130_fd_sc_ls__a221o_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a221o_4": _logic_module(
+        "sky130_fd_sc_ls__a221o_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a221oi_1": _logic_module(
+        "sky130_fd_sc_ls__a221oi_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a221oi_2": _logic_module(
+        "sky130_fd_sc_ls__a221oi_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a221oi_4": _logic_module(
+        "sky130_fd_sc_ls__a221oi_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a222o_1": _logic_module(
+        "sky130_fd_sc_ls__a222o_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a222o_2": _logic_module(
+        "sky130_fd_sc_ls__a222o_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a222oi_1": _logic_module(
+        "sky130_fd_sc_ls__a222oi_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a222oi_2": _logic_module(
+        "sky130_fd_sc_ls__a222oi_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a311o_1": _logic_module(
+        "sky130_fd_sc_ls__a311o_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a311o_2": _logic_module(
+        "sky130_fd_sc_ls__a311o_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a311o_4": _logic_module(
+        "sky130_fd_sc_ls__a311o_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a311oi_1": _logic_module(
+        "sky130_fd_sc_ls__a311oi_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a311oi_2": _logic_module(
+        "sky130_fd_sc_ls__a311oi_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a311oi_4": _logic_module(
+        "sky130_fd_sc_ls__a311oi_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a2111o_1": _logic_module(
+        "sky130_fd_sc_ls__a2111o_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a2111o_2": _logic_module(
+        "sky130_fd_sc_ls__a2111o_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a2111o_4": _logic_module(
+        "sky130_fd_sc_ls__a2111o_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__a2111oi_1": _logic_module(
+        "sky130_fd_sc_ls__a2111oi_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a2111oi_2": _logic_module(
+        "sky130_fd_sc_ls__a2111oi_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__a2111oi_4": _logic_module(
+        "sky130_fd_sc_ls__a2111oi_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__and2_1": _logic_module(
+        "sky130_fd_sc_ls__and2_1",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and2_2": _logic_module(
+        "sky130_fd_sc_ls__and2_2",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and2_4": _logic_module(
+        "sky130_fd_sc_ls__and2_4",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and2b_1": _logic_module(
+        "sky130_fd_sc_ls__and2b_1",
+        "Low Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and2b_2": _logic_module(
+        "sky130_fd_sc_ls__and2b_2",
+        "Low Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and2b_4": _logic_module(
+        "sky130_fd_sc_ls__and2b_4",
+        "Low Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and3_1": _logic_module(
+        "sky130_fd_sc_ls__and3_1",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and3_2": _logic_module(
+        "sky130_fd_sc_ls__and3_2",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and3_4": _logic_module(
+        "sky130_fd_sc_ls__and3_4",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and3b_1": _logic_module(
+        "sky130_fd_sc_ls__and3b_1",
+        "Low Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and3b_2": _logic_module(
+        "sky130_fd_sc_ls__and3b_2",
+        "Low Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and3b_4": _logic_module(
+        "sky130_fd_sc_ls__and3b_4",
+        "Low Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and4_1": _logic_module(
+        "sky130_fd_sc_ls__and4_1",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and4_2": _logic_module(
+        "sky130_fd_sc_ls__and4_2",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and4_4": _logic_module(
+        "sky130_fd_sc_ls__and4_4",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and4b_1": _logic_module(
+        "sky130_fd_sc_ls__and4b_1",
+        "Low Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and4b_2": _logic_module(
+        "sky130_fd_sc_ls__and4b_2",
+        "Low Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and4b_4": _logic_module(
+        "sky130_fd_sc_ls__and4b_4",
+        "Low Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and4bb_1": _logic_module(
+        "sky130_fd_sc_ls__and4bb_1",
+        "Low Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and4bb_2": _logic_module(
+        "sky130_fd_sc_ls__and4bb_2",
+        "Low Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__and4bb_4": _logic_module(
+        "sky130_fd_sc_ls__and4bb_4",
+        "Low Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__buf_1": _logic_module(
+        "sky130_fd_sc_ls__buf_1", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_ls__buf_2": _logic_module(
+        "sky130_fd_sc_ls__buf_2", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_ls__buf_4": _logic_module(
+        "sky130_fd_sc_ls__buf_4", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_ls__buf_8": _logic_module(
+        "sky130_fd_sc_ls__buf_8", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_ls__buf_16": _logic_module(
+        "sky130_fd_sc_ls__buf_16", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"]
+    ),
+    "sky130_fd_sc_ls__bufbuf_8": _logic_module(
+        "sky130_fd_sc_ls__bufbuf_8",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__bufbuf_16": _logic_module(
+        "sky130_fd_sc_ls__bufbuf_16",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__bufinv_8": _logic_module(
+        "sky130_fd_sc_ls__bufinv_8",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__bufinv_16": _logic_module(
+        "sky130_fd_sc_ls__bufinv_16",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkbuf_1": _logic_module(
+        "sky130_fd_sc_ls__clkbuf_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__clkbuf_2": _logic_module(
+        "sky130_fd_sc_ls__clkbuf_2",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__clkbuf_4": _logic_module(
+        "sky130_fd_sc_ls__clkbuf_4",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__clkbuf_8": _logic_module(
+        "sky130_fd_sc_ls__clkbuf_8",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__clkbuf_16": _logic_module(
+        "sky130_fd_sc_ls__clkbuf_16",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__clkdlyinv3sd1_1": _logic_module(
+        "sky130_fd_sc_ls__clkdlyinv3sd1_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkdlyinv3sd2_1": _logic_module(
+        "sky130_fd_sc_ls__clkdlyinv3sd2_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkdlyinv3sd3_1": _logic_module(
+        "sky130_fd_sc_ls__clkdlyinv3sd3_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkdlyinv5sd1_1": _logic_module(
+        "sky130_fd_sc_ls__clkdlyinv5sd1_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkdlyinv5sd2_1": _logic_module(
+        "sky130_fd_sc_ls__clkdlyinv5sd2_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkdlyinv5sd3_1": _logic_module(
+        "sky130_fd_sc_ls__clkdlyinv5sd3_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkinv_1": _logic_module(
+        "sky130_fd_sc_ls__clkinv_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkinv_2": _logic_module(
+        "sky130_fd_sc_ls__clkinv_2",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkinv_4": _logic_module(
+        "sky130_fd_sc_ls__clkinv_4",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkinv_8": _logic_module(
+        "sky130_fd_sc_ls__clkinv_8",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__clkinv_16": _logic_module(
+        "sky130_fd_sc_ls__clkinv_16",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__conb_1": _logic_module(
+        "sky130_fd_sc_ls__conb_1",
+        "Low Speed",
+        ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"],
+    ),
+    "sky130_fd_sc_ls__decap_4": _logic_module(
+        "sky130_fd_sc_ls__decap_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__decap_8": _logic_module(
+        "sky130_fd_sc_ls__decap_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__decaphe_2": _logic_module(
+        "sky130_fd_sc_ls__decaphe_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__decaphe_3": _logic_module(
+        "sky130_fd_sc_ls__decaphe_3", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__decaphe_4": _logic_module(
+        "sky130_fd_sc_ls__decaphe_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__decaphe_6": _logic_module(
+        "sky130_fd_sc_ls__decaphe_6", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__decaphe_8": _logic_module(
+        "sky130_fd_sc_ls__decaphe_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__decaphe_18": _logic_module(
+        "sky130_fd_sc_ls__decaphe_18", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__decaphetap_2": _logic_module(
+        "sky130_fd_sc_ls__decaphetap_2", "Low Speed", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__dfbbn_1": _logic_module(
+        "sky130_fd_sc_ls__dfbbn_1",
+        "Low Speed",
+        ["CLK_N", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dfbbn_2": _logic_module(
+        "sky130_fd_sc_ls__dfbbn_2",
+        "Low Speed",
+        ["CLK_N", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dfbbp_1": _logic_module(
+        "sky130_fd_sc_ls__dfbbp_1",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dfrbp_1": _logic_module(
+        "sky130_fd_sc_ls__dfrbp_1",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dfrbp_2": _logic_module(
+        "sky130_fd_sc_ls__dfrbp_2",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dfrtn_1": _logic_module(
+        "sky130_fd_sc_ls__dfrtn_1",
+        "Low Speed",
+        ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dfrtp_1": _logic_module(
+        "sky130_fd_sc_ls__dfrtp_1",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dfrtp_2": _logic_module(
+        "sky130_fd_sc_ls__dfrtp_2",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dfrtp_4": _logic_module(
+        "sky130_fd_sc_ls__dfrtp_4",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dfsbp_1": _logic_module(
+        "sky130_fd_sc_ls__dfsbp_1",
+        "Low Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dfsbp_2": _logic_module(
+        "sky130_fd_sc_ls__dfsbp_2",
+        "Low Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dfstp_1": _logic_module(
+        "sky130_fd_sc_ls__dfstp_1",
+        "Low Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dfstp_2": _logic_module(
+        "sky130_fd_sc_ls__dfstp_2",
+        "Low Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dfstp_4": _logic_module(
+        "sky130_fd_sc_ls__dfstp_4",
+        "Low Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dfxbp_1": _logic_module(
+        "sky130_fd_sc_ls__dfxbp_1",
+        "Low Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dfxbp_2": _logic_module(
+        "sky130_fd_sc_ls__dfxbp_2",
+        "Low Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dfxtp_1": _logic_module(
+        "sky130_fd_sc_ls__dfxtp_1",
+        "Low Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dfxtp_2": _logic_module(
+        "sky130_fd_sc_ls__dfxtp_2",
+        "Low Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dfxtp_4": _logic_module(
+        "sky130_fd_sc_ls__dfxtp_4",
+        "Low Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__diode_2": _logic_module(
+        "sky130_fd_sc_ls__diode_2", "Low Speed", ["DIODE", "VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__dlclkp_1": _logic_module(
+        "sky130_fd_sc_ls__dlclkp_1",
+        "Low Speed",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ls__dlclkp_2": _logic_module(
+        "sky130_fd_sc_ls__dlclkp_2",
+        "Low Speed",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ls__dlclkp_4": _logic_module(
+        "sky130_fd_sc_ls__dlclkp_4",
+        "Low Speed",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ls__dlrbn_1": _logic_module(
+        "sky130_fd_sc_ls__dlrbn_1",
+        "Low Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dlrbn_2": _logic_module(
+        "sky130_fd_sc_ls__dlrbn_2",
+        "Low Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dlrbp_1": _logic_module(
+        "sky130_fd_sc_ls__dlrbp_1",
+        "Low Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dlrbp_2": _logic_module(
+        "sky130_fd_sc_ls__dlrbp_2",
+        "Low Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dlrtn_1": _logic_module(
+        "sky130_fd_sc_ls__dlrtn_1",
+        "Low Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dlrtn_2": _logic_module(
+        "sky130_fd_sc_ls__dlrtn_2",
+        "Low Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dlrtn_4": _logic_module(
+        "sky130_fd_sc_ls__dlrtn_4",
+        "Low Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dlrtp_1": _logic_module(
+        "sky130_fd_sc_ls__dlrtp_1",
+        "Low Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dlrtp_2": _logic_module(
+        "sky130_fd_sc_ls__dlrtp_2",
+        "Low Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dlrtp_4": _logic_module(
+        "sky130_fd_sc_ls__dlrtp_4",
+        "Low Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dlxbn_1": _logic_module(
+        "sky130_fd_sc_ls__dlxbn_1",
+        "Low Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dlxbn_2": _logic_module(
+        "sky130_fd_sc_ls__dlxbn_2",
+        "Low Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dlxbp_1": _logic_module(
+        "sky130_fd_sc_ls__dlxbp_1",
+        "Low Speed",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__dlxtn_1": _logic_module(
+        "sky130_fd_sc_ls__dlxtn_1",
+        "Low Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dlxtn_2": _logic_module(
+        "sky130_fd_sc_ls__dlxtn_2",
+        "Low Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dlxtn_4": _logic_module(
+        "sky130_fd_sc_ls__dlxtn_4",
+        "Low Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dlxtp_1": _logic_module(
+        "sky130_fd_sc_ls__dlxtp_1",
+        "Low Speed",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__dlygate4sd1_1": _logic_module(
+        "sky130_fd_sc_ls__dlygate4sd1_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__dlygate4sd2_1": _logic_module(
+        "sky130_fd_sc_ls__dlygate4sd2_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__dlygate4sd3_1": _logic_module(
+        "sky130_fd_sc_ls__dlygate4sd3_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__dlymetal6s2s_1": _logic_module(
+        "sky130_fd_sc_ls__dlymetal6s2s_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__dlymetal6s4s_1": _logic_module(
+        "sky130_fd_sc_ls__dlymetal6s4s_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__dlymetal6s6s_1": _logic_module(
+        "sky130_fd_sc_ls__dlymetal6s6s_1",
+        "Low Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__ebufn_1": _logic_module(
+        "sky130_fd_sc_ls__ebufn_1",
+        "Low Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__ebufn_2": _logic_module(
+        "sky130_fd_sc_ls__ebufn_2",
+        "Low Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__ebufn_4": _logic_module(
+        "sky130_fd_sc_ls__ebufn_4",
+        "Low Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__ebufn_8": _logic_module(
+        "sky130_fd_sc_ls__ebufn_8",
+        "Low Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__edfxbp_1": _logic_module(
+        "sky130_fd_sc_ls__edfxbp_1",
+        "Low Speed",
+        ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__edfxtp_1": _logic_module(
+        "sky130_fd_sc_ls__edfxtp_1",
+        "Low Speed",
+        ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__einvn_1": _logic_module(
+        "sky130_fd_sc_ls__einvn_1",
+        "Low Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__einvn_2": _logic_module(
+        "sky130_fd_sc_ls__einvn_2",
+        "Low Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__einvn_4": _logic_module(
+        "sky130_fd_sc_ls__einvn_4",
+        "Low Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__einvn_8": _logic_module(
+        "sky130_fd_sc_ls__einvn_8",
+        "Low Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__einvp_1": _logic_module(
+        "sky130_fd_sc_ls__einvp_1",
+        "Low Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__einvp_2": _logic_module(
+        "sky130_fd_sc_ls__einvp_2",
+        "Low Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__einvp_4": _logic_module(
+        "sky130_fd_sc_ls__einvp_4",
+        "Low Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__einvp_8": _logic_module(
+        "sky130_fd_sc_ls__einvp_8",
+        "Low Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ls__fa_1": _logic_module(
+        "sky130_fd_sc_ls__fa_1",
+        "Low Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ls__fa_2": _logic_module(
+        "sky130_fd_sc_ls__fa_2",
+        "Low Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ls__fa_4": _logic_module(
+        "sky130_fd_sc_ls__fa_4",
+        "Low Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ls__fah_1": _logic_module(
+        "sky130_fd_sc_ls__fah_1",
+        "Low Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ls__fah_2": _logic_module(
+        "sky130_fd_sc_ls__fah_2",
+        "Low Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ls__fah_4": _logic_module(
+        "sky130_fd_sc_ls__fah_4",
+        "Low Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ls__fahcin_1": _logic_module(
+        "sky130_fd_sc_ls__fahcin_1",
+        "Low Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ls__fahcon_1": _logic_module(
+        "sky130_fd_sc_ls__fahcon_1",
+        "Low Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"],
+    ),
+    "sky130_fd_sc_ls__fill_1": _logic_module(
+        "sky130_fd_sc_ls__fill_1", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__fill_2": _logic_module(
+        "sky130_fd_sc_ls__fill_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__fill_4": _logic_module(
+        "sky130_fd_sc_ls__fill_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__fill_8": _logic_module(
+        "sky130_fd_sc_ls__fill_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__fill_diode_2": _logic_module(
+        "sky130_fd_sc_ls__fill_diode_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__fill_diode_4": _logic_module(
+        "sky130_fd_sc_ls__fill_diode_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__fill_diode_8": _logic_module(
+        "sky130_fd_sc_ls__fill_diode_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__ha_1": _logic_module(
+        "sky130_fd_sc_ls__ha_1",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ls__ha_2": _logic_module(
+        "sky130_fd_sc_ls__ha_2",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ls__ha_4": _logic_module(
+        "sky130_fd_sc_ls__ha_4",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ls__inv_1": _logic_module(
+        "sky130_fd_sc_ls__inv_1", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_ls__inv_2": _logic_module(
+        "sky130_fd_sc_ls__inv_2", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_ls__inv_4": _logic_module(
+        "sky130_fd_sc_ls__inv_4", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_ls__inv_8": _logic_module(
+        "sky130_fd_sc_ls__inv_8", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_ls__inv_16": _logic_module(
+        "sky130_fd_sc_ls__inv_16", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"]
+    ),
+    "sky130_fd_sc_ls__latchupcell": _logic_module(
+        "sky130_fd_sc_ls__latchupcell", "Low Speed", ["VGND", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__maj3_1": _logic_module(
+        "sky130_fd_sc_ls__maj3_1",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__maj3_2": _logic_module(
+        "sky130_fd_sc_ls__maj3_2",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__maj3_4": _logic_module(
+        "sky130_fd_sc_ls__maj3_4",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__mux2_1": _logic_module(
+        "sky130_fd_sc_ls__mux2_1",
+        "Low Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__mux2_2": _logic_module(
+        "sky130_fd_sc_ls__mux2_2",
+        "Low Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__mux2_4": _logic_module(
+        "sky130_fd_sc_ls__mux2_4",
+        "Low Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__mux2i_1": _logic_module(
+        "sky130_fd_sc_ls__mux2i_1",
+        "Low Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__mux2i_2": _logic_module(
+        "sky130_fd_sc_ls__mux2i_2",
+        "Low Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__mux2i_4": _logic_module(
+        "sky130_fd_sc_ls__mux2i_4",
+        "Low Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__mux4_1": _logic_module(
+        "sky130_fd_sc_ls__mux4_1",
+        "Low Speed",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__mux4_2": _logic_module(
+        "sky130_fd_sc_ls__mux4_2",
+        "Low Speed",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__mux4_4": _logic_module(
+        "sky130_fd_sc_ls__mux4_4",
+        "Low Speed",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__nand2_1": _logic_module(
+        "sky130_fd_sc_ls__nand2_1",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand2_2": _logic_module(
+        "sky130_fd_sc_ls__nand2_2",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand2_4": _logic_module(
+        "sky130_fd_sc_ls__nand2_4",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand2_8": _logic_module(
+        "sky130_fd_sc_ls__nand2_8",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand2b_1": _logic_module(
+        "sky130_fd_sc_ls__nand2b_1",
+        "Low Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand2b_2": _logic_module(
+        "sky130_fd_sc_ls__nand2b_2",
+        "Low Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand2b_4": _logic_module(
+        "sky130_fd_sc_ls__nand2b_4",
+        "Low Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand3_1": _logic_module(
+        "sky130_fd_sc_ls__nand3_1",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand3_2": _logic_module(
+        "sky130_fd_sc_ls__nand3_2",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand3_4": _logic_module(
+        "sky130_fd_sc_ls__nand3_4",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand3b_1": _logic_module(
+        "sky130_fd_sc_ls__nand3b_1",
+        "Low Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand3b_2": _logic_module(
+        "sky130_fd_sc_ls__nand3b_2",
+        "Low Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand3b_4": _logic_module(
+        "sky130_fd_sc_ls__nand3b_4",
+        "Low Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand4_1": _logic_module(
+        "sky130_fd_sc_ls__nand4_1",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand4_2": _logic_module(
+        "sky130_fd_sc_ls__nand4_2",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand4_4": _logic_module(
+        "sky130_fd_sc_ls__nand4_4",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand4b_1": _logic_module(
+        "sky130_fd_sc_ls__nand4b_1",
+        "Low Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand4b_2": _logic_module(
+        "sky130_fd_sc_ls__nand4b_2",
+        "Low Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand4b_4": _logic_module(
+        "sky130_fd_sc_ls__nand4b_4",
+        "Low Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand4bb_1": _logic_module(
+        "sky130_fd_sc_ls__nand4bb_1",
+        "Low Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand4bb_2": _logic_module(
+        "sky130_fd_sc_ls__nand4bb_2",
+        "Low Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nand4bb_4": _logic_module(
+        "sky130_fd_sc_ls__nand4bb_4",
+        "Low Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor2_1": _logic_module(
+        "sky130_fd_sc_ls__nor2_1",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor2_2": _logic_module(
+        "sky130_fd_sc_ls__nor2_2",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor2_4": _logic_module(
+        "sky130_fd_sc_ls__nor2_4",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor2_8": _logic_module(
+        "sky130_fd_sc_ls__nor2_8",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor2b_1": _logic_module(
+        "sky130_fd_sc_ls__nor2b_1",
+        "Low Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor2b_2": _logic_module(
+        "sky130_fd_sc_ls__nor2b_2",
+        "Low Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor2b_4": _logic_module(
+        "sky130_fd_sc_ls__nor2b_4",
+        "Low Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor3_1": _logic_module(
+        "sky130_fd_sc_ls__nor3_1",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor3_2": _logic_module(
+        "sky130_fd_sc_ls__nor3_2",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor3_4": _logic_module(
+        "sky130_fd_sc_ls__nor3_4",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor3b_1": _logic_module(
+        "sky130_fd_sc_ls__nor3b_1",
+        "Low Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor3b_2": _logic_module(
+        "sky130_fd_sc_ls__nor3b_2",
+        "Low Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor3b_4": _logic_module(
+        "sky130_fd_sc_ls__nor3b_4",
+        "Low Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor4_1": _logic_module(
+        "sky130_fd_sc_ls__nor4_1",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor4_2": _logic_module(
+        "sky130_fd_sc_ls__nor4_2",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor4_4": _logic_module(
+        "sky130_fd_sc_ls__nor4_4",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor4b_1": _logic_module(
+        "sky130_fd_sc_ls__nor4b_1",
+        "Low Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor4b_2": _logic_module(
+        "sky130_fd_sc_ls__nor4b_2",
+        "Low Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor4b_4": _logic_module(
+        "sky130_fd_sc_ls__nor4b_4",
+        "Low Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor4bb_1": _logic_module(
+        "sky130_fd_sc_ls__nor4bb_1",
+        "Low Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor4bb_2": _logic_module(
+        "sky130_fd_sc_ls__nor4bb_2",
+        "Low Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__nor4bb_4": _logic_module(
+        "sky130_fd_sc_ls__nor4bb_4",
+        "Low Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o2bb2a_1": _logic_module(
+        "sky130_fd_sc_ls__o2bb2a_1",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o2bb2a_2": _logic_module(
+        "sky130_fd_sc_ls__o2bb2a_2",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o2bb2a_4": _logic_module(
+        "sky130_fd_sc_ls__o2bb2a_4",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o2bb2ai_1": _logic_module(
+        "sky130_fd_sc_ls__o2bb2ai_1",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o2bb2ai_2": _logic_module(
+        "sky130_fd_sc_ls__o2bb2ai_2",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o2bb2ai_4": _logic_module(
+        "sky130_fd_sc_ls__o2bb2ai_4",
+        "Low Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o21a_1": _logic_module(
+        "sky130_fd_sc_ls__o21a_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o21a_2": _logic_module(
+        "sky130_fd_sc_ls__o21a_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o21a_4": _logic_module(
+        "sky130_fd_sc_ls__o21a_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o21ai_1": _logic_module(
+        "sky130_fd_sc_ls__o21ai_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o21ai_2": _logic_module(
+        "sky130_fd_sc_ls__o21ai_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o21ai_4": _logic_module(
+        "sky130_fd_sc_ls__o21ai_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o21ba_1": _logic_module(
+        "sky130_fd_sc_ls__o21ba_1",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o21ba_2": _logic_module(
+        "sky130_fd_sc_ls__o21ba_2",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o21ba_4": _logic_module(
+        "sky130_fd_sc_ls__o21ba_4",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o21bai_1": _logic_module(
+        "sky130_fd_sc_ls__o21bai_1",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o21bai_2": _logic_module(
+        "sky130_fd_sc_ls__o21bai_2",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o21bai_4": _logic_module(
+        "sky130_fd_sc_ls__o21bai_4",
+        "Low Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o22a_1": _logic_module(
+        "sky130_fd_sc_ls__o22a_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o22a_2": _logic_module(
+        "sky130_fd_sc_ls__o22a_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o22a_4": _logic_module(
+        "sky130_fd_sc_ls__o22a_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o22ai_1": _logic_module(
+        "sky130_fd_sc_ls__o22ai_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o22ai_2": _logic_module(
+        "sky130_fd_sc_ls__o22ai_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o22ai_4": _logic_module(
+        "sky130_fd_sc_ls__o22ai_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o31a_1": _logic_module(
+        "sky130_fd_sc_ls__o31a_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o31a_2": _logic_module(
+        "sky130_fd_sc_ls__o31a_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o31a_4": _logic_module(
+        "sky130_fd_sc_ls__o31a_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o31ai_1": _logic_module(
+        "sky130_fd_sc_ls__o31ai_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o31ai_2": _logic_module(
+        "sky130_fd_sc_ls__o31ai_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o31ai_4": _logic_module(
+        "sky130_fd_sc_ls__o31ai_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o32a_1": _logic_module(
+        "sky130_fd_sc_ls__o32a_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o32a_2": _logic_module(
+        "sky130_fd_sc_ls__o32a_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o32a_4": _logic_module(
+        "sky130_fd_sc_ls__o32a_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o32ai_1": _logic_module(
+        "sky130_fd_sc_ls__o32ai_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o32ai_2": _logic_module(
+        "sky130_fd_sc_ls__o32ai_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o32ai_4": _logic_module(
+        "sky130_fd_sc_ls__o32ai_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o41a_1": _logic_module(
+        "sky130_fd_sc_ls__o41a_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o41a_2": _logic_module(
+        "sky130_fd_sc_ls__o41a_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o41a_4": _logic_module(
+        "sky130_fd_sc_ls__o41a_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o41ai_1": _logic_module(
+        "sky130_fd_sc_ls__o41ai_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o41ai_2": _logic_module(
+        "sky130_fd_sc_ls__o41ai_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o41ai_4": _logic_module(
+        "sky130_fd_sc_ls__o41ai_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o211a_1": _logic_module(
+        "sky130_fd_sc_ls__o211a_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o211a_2": _logic_module(
+        "sky130_fd_sc_ls__o211a_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o211a_4": _logic_module(
+        "sky130_fd_sc_ls__o211a_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o211ai_1": _logic_module(
+        "sky130_fd_sc_ls__o211ai_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o211ai_2": _logic_module(
+        "sky130_fd_sc_ls__o211ai_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o211ai_4": _logic_module(
+        "sky130_fd_sc_ls__o211ai_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o221a_1": _logic_module(
+        "sky130_fd_sc_ls__o221a_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o221a_2": _logic_module(
+        "sky130_fd_sc_ls__o221a_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o221a_4": _logic_module(
+        "sky130_fd_sc_ls__o221a_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o221ai_1": _logic_module(
+        "sky130_fd_sc_ls__o221ai_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o221ai_2": _logic_module(
+        "sky130_fd_sc_ls__o221ai_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o221ai_4": _logic_module(
+        "sky130_fd_sc_ls__o221ai_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o311a_1": _logic_module(
+        "sky130_fd_sc_ls__o311a_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o311a_2": _logic_module(
+        "sky130_fd_sc_ls__o311a_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o311a_4": _logic_module(
+        "sky130_fd_sc_ls__o311a_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o311ai_1": _logic_module(
+        "sky130_fd_sc_ls__o311ai_1",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o311ai_2": _logic_module(
+        "sky130_fd_sc_ls__o311ai_2",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o311ai_4": _logic_module(
+        "sky130_fd_sc_ls__o311ai_4",
+        "Low Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o2111a_1": _logic_module(
+        "sky130_fd_sc_ls__o2111a_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o2111a_2": _logic_module(
+        "sky130_fd_sc_ls__o2111a_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o2111a_4": _logic_module(
+        "sky130_fd_sc_ls__o2111a_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__o2111ai_1": _logic_module(
+        "sky130_fd_sc_ls__o2111ai_1",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o2111ai_2": _logic_module(
+        "sky130_fd_sc_ls__o2111ai_2",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__o2111ai_4": _logic_module(
+        "sky130_fd_sc_ls__o2111ai_4",
+        "Low Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__or2_1": _logic_module(
+        "sky130_fd_sc_ls__or2_1",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or2_2": _logic_module(
+        "sky130_fd_sc_ls__or2_2",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or2_4": _logic_module(
+        "sky130_fd_sc_ls__or2_4",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or2b_1": _logic_module(
+        "sky130_fd_sc_ls__or2b_1",
+        "Low Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or2b_2": _logic_module(
+        "sky130_fd_sc_ls__or2b_2",
+        "Low Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or2b_4": _logic_module(
+        "sky130_fd_sc_ls__or2b_4",
+        "Low Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or3_1": _logic_module(
+        "sky130_fd_sc_ls__or3_1",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or3_2": _logic_module(
+        "sky130_fd_sc_ls__or3_2",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or3_4": _logic_module(
+        "sky130_fd_sc_ls__or3_4",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or3b_1": _logic_module(
+        "sky130_fd_sc_ls__or3b_1",
+        "Low Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or3b_2": _logic_module(
+        "sky130_fd_sc_ls__or3b_2",
+        "Low Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or3b_4": _logic_module(
+        "sky130_fd_sc_ls__or3b_4",
+        "Low Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or4_1": _logic_module(
+        "sky130_fd_sc_ls__or4_1",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or4_2": _logic_module(
+        "sky130_fd_sc_ls__or4_2",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or4_4": _logic_module(
+        "sky130_fd_sc_ls__or4_4",
+        "Low Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or4b_1": _logic_module(
+        "sky130_fd_sc_ls__or4b_1",
+        "Low Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or4b_2": _logic_module(
+        "sky130_fd_sc_ls__or4b_2",
+        "Low Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or4b_4": _logic_module(
+        "sky130_fd_sc_ls__or4b_4",
+        "Low Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or4bb_1": _logic_module(
+        "sky130_fd_sc_ls__or4bb_1",
+        "Low Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or4bb_2": _logic_module(
+        "sky130_fd_sc_ls__or4bb_2",
+        "Low Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__or4bb_4": _logic_module(
+        "sky130_fd_sc_ls__or4bb_4",
+        "Low Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__sdfbbn_1": _logic_module(
+        "sky130_fd_sc_ls__sdfbbn_1",
+        "Low Speed",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_ls__sdfbbn_2": _logic_module(
+        "sky130_fd_sc_ls__sdfbbn_2",
+        "Low Speed",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_ls__sdfbbp_1": _logic_module(
+        "sky130_fd_sc_ls__sdfbbp_1",
+        "Low Speed",
+        [
+            "CLK",
+            "D",
+            "RESET_B",
+            "SCD",
+            "SCE",
+            "SET_B",
+            "VGND",
+            "VNB",
+            "VPB",
+            "VPWR",
+            "Q",
+        ],
+    ),
+    "sky130_fd_sc_ls__sdfrbp_1": _logic_module(
+        "sky130_fd_sc_ls__sdfrbp_1",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__sdfrbp_2": _logic_module(
+        "sky130_fd_sc_ls__sdfrbp_2",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__sdfrtn_1": _logic_module(
+        "sky130_fd_sc_ls__sdfrtn_1",
+        "Low Speed",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sdfrtp_1": _logic_module(
+        "sky130_fd_sc_ls__sdfrtp_1",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sdfrtp_2": _logic_module(
+        "sky130_fd_sc_ls__sdfrtp_2",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sdfrtp_4": _logic_module(
+        "sky130_fd_sc_ls__sdfrtp_4",
+        "Low Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sdfsbp_1": _logic_module(
+        "sky130_fd_sc_ls__sdfsbp_1",
+        "Low Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__sdfsbp_2": _logic_module(
+        "sky130_fd_sc_ls__sdfsbp_2",
+        "Low Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__sdfstp_1": _logic_module(
+        "sky130_fd_sc_ls__sdfstp_1",
+        "Low Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sdfstp_2": _logic_module(
+        "sky130_fd_sc_ls__sdfstp_2",
+        "Low Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sdfstp_4": _logic_module(
+        "sky130_fd_sc_ls__sdfstp_4",
+        "Low Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sdfxbp_1": _logic_module(
+        "sky130_fd_sc_ls__sdfxbp_1",
+        "Low Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__sdfxbp_2": _logic_module(
+        "sky130_fd_sc_ls__sdfxbp_2",
+        "Low Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__sdfxtp_1": _logic_module(
+        "sky130_fd_sc_ls__sdfxtp_1",
+        "Low Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sdfxtp_2": _logic_module(
+        "sky130_fd_sc_ls__sdfxtp_2",
+        "Low Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sdfxtp_4": _logic_module(
+        "sky130_fd_sc_ls__sdfxtp_4",
+        "Low Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sdlclkp_1": _logic_module(
+        "sky130_fd_sc_ls__sdlclkp_1",
+        "Low Speed",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ls__sdlclkp_2": _logic_module(
+        "sky130_fd_sc_ls__sdlclkp_2",
+        "Low Speed",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ls__sdlclkp_4": _logic_module(
+        "sky130_fd_sc_ls__sdlclkp_4",
+        "Low Speed",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ls__sedfxbp_1": _logic_module(
+        "sky130_fd_sc_ls__sedfxbp_1",
+        "Low Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__sedfxbp_2": _logic_module(
+        "sky130_fd_sc_ls__sedfxbp_2",
+        "Low Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ls__sedfxtp_1": _logic_module(
+        "sky130_fd_sc_ls__sedfxtp_1",
+        "Low Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sedfxtp_2": _logic_module(
+        "sky130_fd_sc_ls__sedfxtp_2",
+        "Low Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__sedfxtp_4": _logic_module(
+        "sky130_fd_sc_ls__sedfxtp_4",
+        "Low Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ls__tap_1": _logic_module(
+        "sky130_fd_sc_ls__tap_1", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__tap_2": _logic_module(
+        "sky130_fd_sc_ls__tap_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__tapmet1_2": _logic_module(
+        "sky130_fd_sc_ls__tapmet1_2", "Low Speed", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__tapvgnd2_1": _logic_module(
+        "sky130_fd_sc_ls__tapvgnd2_1", "Low Speed", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__tapvgnd_1": _logic_module(
+        "sky130_fd_sc_ls__tapvgnd_1", "Low Speed", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__tapvgndnovpb_1": _logic_module(
+        "sky130_fd_sc_ls__tapvgndnovpb_1", "Low Speed", ["VGND", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__tapvpwrvgnd_1": _logic_module(
+        "sky130_fd_sc_ls__tapvpwrvgnd_1", "Low Speed", ["VGND", "VPWR"]
+    ),
+    "sky130_fd_sc_ls__xnor2_1": _logic_module(
+        "sky130_fd_sc_ls__xnor2_1",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__xnor2_2": _logic_module(
+        "sky130_fd_sc_ls__xnor2_2",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__xnor2_4": _logic_module(
+        "sky130_fd_sc_ls__xnor2_4",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ls__xnor3_1": _logic_module(
+        "sky130_fd_sc_ls__xnor3_1",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__xnor3_2": _logic_module(
+        "sky130_fd_sc_ls__xnor3_2",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__xnor3_4": _logic_module(
+        "sky130_fd_sc_ls__xnor3_4",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__xor2_1": _logic_module(
+        "sky130_fd_sc_ls__xor2_1",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__xor2_2": _logic_module(
+        "sky130_fd_sc_ls__xor2_2",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__xor2_4": _logic_module(
+        "sky130_fd_sc_ls__xor2_4",
+        "Low Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__xor3_1": _logic_module(
+        "sky130_fd_sc_ls__xor3_1",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__xor3_2": _logic_module(
+        "sky130_fd_sc_ls__xor3_2",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ls__xor3_4": _logic_module(
+        "sky130_fd_sc_ls__xor3_4",
+        "Low Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+}
+
+ms: Dict[str, h.ExternalModule] = {
+    "sky130_fd_sc_ms__a2bb2o_1": _logic_module(
+        "sky130_fd_sc_ms__a2bb2o_1",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a2bb2o_2": _logic_module(
+        "sky130_fd_sc_ms__a2bb2o_2",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a2bb2o_4": _logic_module(
+        "sky130_fd_sc_ms__a2bb2o_4",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a2bb2oi_1": _logic_module(
+        "sky130_fd_sc_ms__a2bb2oi_1",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a2bb2oi_2": _logic_module(
+        "sky130_fd_sc_ms__a2bb2oi_2",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a2bb2oi_4": _logic_module(
+        "sky130_fd_sc_ms__a2bb2oi_4",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a21bo_1": _logic_module(
+        "sky130_fd_sc_ms__a21bo_1",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a21bo_2": _logic_module(
+        "sky130_fd_sc_ms__a21bo_2",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a21bo_4": _logic_module(
+        "sky130_fd_sc_ms__a21bo_4",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a21boi_1": _logic_module(
+        "sky130_fd_sc_ms__a21boi_1",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a21boi_2": _logic_module(
+        "sky130_fd_sc_ms__a21boi_2",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a21boi_4": _logic_module(
+        "sky130_fd_sc_ms__a21boi_4",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a21o_1": _logic_module(
+        "sky130_fd_sc_ms__a21o_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a21o_2": _logic_module(
+        "sky130_fd_sc_ms__a21o_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a21o_4": _logic_module(
+        "sky130_fd_sc_ms__a21o_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a21oi_1": _logic_module(
+        "sky130_fd_sc_ms__a21oi_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a21oi_2": _logic_module(
+        "sky130_fd_sc_ms__a21oi_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a21oi_4": _logic_module(
+        "sky130_fd_sc_ms__a21oi_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a22o_1": _logic_module(
+        "sky130_fd_sc_ms__a22o_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a22o_2": _logic_module(
+        "sky130_fd_sc_ms__a22o_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a22o_4": _logic_module(
+        "sky130_fd_sc_ms__a22o_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a22oi_1": _logic_module(
+        "sky130_fd_sc_ms__a22oi_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a22oi_2": _logic_module(
+        "sky130_fd_sc_ms__a22oi_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a22oi_4": _logic_module(
+        "sky130_fd_sc_ms__a22oi_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a31o_1": _logic_module(
+        "sky130_fd_sc_ms__a31o_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a31o_2": _logic_module(
+        "sky130_fd_sc_ms__a31o_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a31o_4": _logic_module(
+        "sky130_fd_sc_ms__a31o_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a31oi_1": _logic_module(
+        "sky130_fd_sc_ms__a31oi_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a31oi_2": _logic_module(
+        "sky130_fd_sc_ms__a31oi_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a31oi_4": _logic_module(
+        "sky130_fd_sc_ms__a31oi_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a32o_1": _logic_module(
+        "sky130_fd_sc_ms__a32o_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a32o_2": _logic_module(
+        "sky130_fd_sc_ms__a32o_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a32o_4": _logic_module(
+        "sky130_fd_sc_ms__a32o_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a32oi_1": _logic_module(
+        "sky130_fd_sc_ms__a32oi_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a32oi_2": _logic_module(
+        "sky130_fd_sc_ms__a32oi_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a32oi_4": _logic_module(
+        "sky130_fd_sc_ms__a32oi_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a41o_1": _logic_module(
+        "sky130_fd_sc_ms__a41o_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a41o_2": _logic_module(
+        "sky130_fd_sc_ms__a41o_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a41o_4": _logic_module(
+        "sky130_fd_sc_ms__a41o_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a41oi_1": _logic_module(
+        "sky130_fd_sc_ms__a41oi_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a41oi_2": _logic_module(
+        "sky130_fd_sc_ms__a41oi_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a41oi_4": _logic_module(
+        "sky130_fd_sc_ms__a41oi_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a211o_1": _logic_module(
+        "sky130_fd_sc_ms__a211o_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a211o_2": _logic_module(
+        "sky130_fd_sc_ms__a211o_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a211o_4": _logic_module(
+        "sky130_fd_sc_ms__a211o_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a211oi_1": _logic_module(
+        "sky130_fd_sc_ms__a211oi_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a211oi_2": _logic_module(
+        "sky130_fd_sc_ms__a211oi_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a211oi_4": _logic_module(
+        "sky130_fd_sc_ms__a211oi_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a221o_1": _logic_module(
+        "sky130_fd_sc_ms__a221o_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a221o_2": _logic_module(
+        "sky130_fd_sc_ms__a221o_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a221o_4": _logic_module(
+        "sky130_fd_sc_ms__a221o_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a221oi_1": _logic_module(
+        "sky130_fd_sc_ms__a221oi_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a221oi_2": _logic_module(
+        "sky130_fd_sc_ms__a221oi_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a221oi_4": _logic_module(
+        "sky130_fd_sc_ms__a221oi_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a222o_1": _logic_module(
+        "sky130_fd_sc_ms__a222o_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a222o_2": _logic_module(
+        "sky130_fd_sc_ms__a222o_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a222oi_1": _logic_module(
+        "sky130_fd_sc_ms__a222oi_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a222oi_2": _logic_module(
+        "sky130_fd_sc_ms__a222oi_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a311o_1": _logic_module(
+        "sky130_fd_sc_ms__a311o_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a311o_2": _logic_module(
+        "sky130_fd_sc_ms__a311o_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a311o_4": _logic_module(
+        "sky130_fd_sc_ms__a311o_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a311oi_1": _logic_module(
+        "sky130_fd_sc_ms__a311oi_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a311oi_2": _logic_module(
+        "sky130_fd_sc_ms__a311oi_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a311oi_4": _logic_module(
+        "sky130_fd_sc_ms__a311oi_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a2111o_1": _logic_module(
+        "sky130_fd_sc_ms__a2111o_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a2111o_2": _logic_module(
+        "sky130_fd_sc_ms__a2111o_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a2111o_4": _logic_module(
+        "sky130_fd_sc_ms__a2111o_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__a2111oi_1": _logic_module(
+        "sky130_fd_sc_ms__a2111oi_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a2111oi_2": _logic_module(
+        "sky130_fd_sc_ms__a2111oi_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__a2111oi_4": _logic_module(
+        "sky130_fd_sc_ms__a2111oi_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__and2_1": _logic_module(
+        "sky130_fd_sc_ms__and2_1",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and2_2": _logic_module(
+        "sky130_fd_sc_ms__and2_2",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and2_4": _logic_module(
+        "sky130_fd_sc_ms__and2_4",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and2b_1": _logic_module(
+        "sky130_fd_sc_ms__and2b_1",
+        "Medium Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and2b_2": _logic_module(
+        "sky130_fd_sc_ms__and2b_2",
+        "Medium Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and2b_4": _logic_module(
+        "sky130_fd_sc_ms__and2b_4",
+        "Medium Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and3_1": _logic_module(
+        "sky130_fd_sc_ms__and3_1",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and3_2": _logic_module(
+        "sky130_fd_sc_ms__and3_2",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and3_4": _logic_module(
+        "sky130_fd_sc_ms__and3_4",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and3b_1": _logic_module(
+        "sky130_fd_sc_ms__and3b_1",
+        "Medium Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and3b_2": _logic_module(
+        "sky130_fd_sc_ms__and3b_2",
+        "Medium Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and3b_4": _logic_module(
+        "sky130_fd_sc_ms__and3b_4",
+        "Medium Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and4_1": _logic_module(
+        "sky130_fd_sc_ms__and4_1",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and4_2": _logic_module(
+        "sky130_fd_sc_ms__and4_2",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and4_4": _logic_module(
+        "sky130_fd_sc_ms__and4_4",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and4b_1": _logic_module(
+        "sky130_fd_sc_ms__and4b_1",
+        "Medium Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and4b_2": _logic_module(
+        "sky130_fd_sc_ms__and4b_2",
+        "Medium Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and4b_4": _logic_module(
+        "sky130_fd_sc_ms__and4b_4",
+        "Medium Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and4bb_1": _logic_module(
+        "sky130_fd_sc_ms__and4bb_1",
+        "Medium Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and4bb_2": _logic_module(
+        "sky130_fd_sc_ms__and4bb_2",
+        "Medium Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__and4bb_4": _logic_module(
+        "sky130_fd_sc_ms__and4bb_4",
+        "Medium Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__buf_1": _logic_module(
+        "sky130_fd_sc_ms__buf_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__buf_2": _logic_module(
+        "sky130_fd_sc_ms__buf_2",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__buf_4": _logic_module(
+        "sky130_fd_sc_ms__buf_4",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__buf_8": _logic_module(
+        "sky130_fd_sc_ms__buf_8",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__buf_16": _logic_module(
+        "sky130_fd_sc_ms__buf_16",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__bufbuf_8": _logic_module(
+        "sky130_fd_sc_ms__bufbuf_8",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__bufbuf_16": _logic_module(
+        "sky130_fd_sc_ms__bufbuf_16",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__bufinv_8": _logic_module(
+        "sky130_fd_sc_ms__bufinv_8",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__bufinv_16": _logic_module(
+        "sky130_fd_sc_ms__bufinv_16",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkbuf_1": _logic_module(
+        "sky130_fd_sc_ms__clkbuf_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__clkbuf_2": _logic_module(
+        "sky130_fd_sc_ms__clkbuf_2",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__clkbuf_4": _logic_module(
+        "sky130_fd_sc_ms__clkbuf_4",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__clkbuf_8": _logic_module(
+        "sky130_fd_sc_ms__clkbuf_8",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__clkbuf_16": _logic_module(
+        "sky130_fd_sc_ms__clkbuf_16",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__clkdlyinv3sd1_1": _logic_module(
+        "sky130_fd_sc_ms__clkdlyinv3sd1_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkdlyinv3sd2_1": _logic_module(
+        "sky130_fd_sc_ms__clkdlyinv3sd2_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkdlyinv3sd3_1": _logic_module(
+        "sky130_fd_sc_ms__clkdlyinv3sd3_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkdlyinv5sd1_1": _logic_module(
+        "sky130_fd_sc_ms__clkdlyinv5sd1_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkdlyinv5sd2_1": _logic_module(
+        "sky130_fd_sc_ms__clkdlyinv5sd2_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkdlyinv5sd3_1": _logic_module(
+        "sky130_fd_sc_ms__clkdlyinv5sd3_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkinv_1": _logic_module(
+        "sky130_fd_sc_ms__clkinv_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkinv_2": _logic_module(
+        "sky130_fd_sc_ms__clkinv_2",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkinv_4": _logic_module(
+        "sky130_fd_sc_ms__clkinv_4",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkinv_8": _logic_module(
+        "sky130_fd_sc_ms__clkinv_8",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__clkinv_16": _logic_module(
+        "sky130_fd_sc_ms__clkinv_16",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__conb_1": _logic_module(
+        "sky130_fd_sc_ms__conb_1",
+        "Medium Speed",
+        ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"],
+    ),
+    "sky130_fd_sc_ms__decap_4": _logic_module(
+        "sky130_fd_sc_ms__decap_4", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__decap_8": _logic_module(
+        "sky130_fd_sc_ms__decap_8", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__dfbbn_1": _logic_module(
+        "sky130_fd_sc_ms__dfbbn_1",
+        "Medium Speed",
+        ["CLK_N", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dfbbn_2": _logic_module(
+        "sky130_fd_sc_ms__dfbbn_2",
+        "Medium Speed",
+        ["CLK_N", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dfbbp_1": _logic_module(
+        "sky130_fd_sc_ms__dfbbp_1",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dfrbp_1": _logic_module(
+        "sky130_fd_sc_ms__dfrbp_1",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dfrbp_2": _logic_module(
+        "sky130_fd_sc_ms__dfrbp_2",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dfrtn_1": _logic_module(
+        "sky130_fd_sc_ms__dfrtn_1",
+        "Medium Speed",
+        ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dfrtp_1": _logic_module(
+        "sky130_fd_sc_ms__dfrtp_1",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dfrtp_2": _logic_module(
+        "sky130_fd_sc_ms__dfrtp_2",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dfrtp_4": _logic_module(
+        "sky130_fd_sc_ms__dfrtp_4",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dfsbp_1": _logic_module(
+        "sky130_fd_sc_ms__dfsbp_1",
+        "Medium Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dfsbp_2": _logic_module(
+        "sky130_fd_sc_ms__dfsbp_2",
+        "Medium Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dfstp_1": _logic_module(
+        "sky130_fd_sc_ms__dfstp_1",
+        "Medium Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dfstp_2": _logic_module(
+        "sky130_fd_sc_ms__dfstp_2",
+        "Medium Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dfstp_4": _logic_module(
+        "sky130_fd_sc_ms__dfstp_4",
+        "Medium Speed",
+        ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dfxbp_1": _logic_module(
+        "sky130_fd_sc_ms__dfxbp_1",
+        "Medium Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dfxbp_2": _logic_module(
+        "sky130_fd_sc_ms__dfxbp_2",
+        "Medium Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dfxtp_1": _logic_module(
+        "sky130_fd_sc_ms__dfxtp_1",
+        "Medium Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dfxtp_2": _logic_module(
+        "sky130_fd_sc_ms__dfxtp_2",
+        "Medium Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dfxtp_4": _logic_module(
+        "sky130_fd_sc_ms__dfxtp_4",
+        "Medium Speed",
+        ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__diode_2": _logic_module(
+        "sky130_fd_sc_ms__diode_2",
+        "Medium Speed",
+        ["DIODE", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_ms__dlclkp_1": _logic_module(
+        "sky130_fd_sc_ms__dlclkp_1",
+        "Medium Speed",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ms__dlclkp_2": _logic_module(
+        "sky130_fd_sc_ms__dlclkp_2",
+        "Medium Speed",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ms__dlclkp_4": _logic_module(
+        "sky130_fd_sc_ms__dlclkp_4",
+        "Medium Speed",
+        ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ms__dlrbn_1": _logic_module(
+        "sky130_fd_sc_ms__dlrbn_1",
+        "Medium Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dlrbn_2": _logic_module(
+        "sky130_fd_sc_ms__dlrbn_2",
+        "Medium Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dlrbp_1": _logic_module(
+        "sky130_fd_sc_ms__dlrbp_1",
+        "Medium Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dlrbp_2": _logic_module(
+        "sky130_fd_sc_ms__dlrbp_2",
+        "Medium Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dlrtn_1": _logic_module(
+        "sky130_fd_sc_ms__dlrtn_1",
+        "Medium Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dlrtn_2": _logic_module(
+        "sky130_fd_sc_ms__dlrtn_2",
+        "Medium Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dlrtn_4": _logic_module(
+        "sky130_fd_sc_ms__dlrtn_4",
+        "Medium Speed",
+        ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dlrtp_1": _logic_module(
+        "sky130_fd_sc_ms__dlrtp_1",
+        "Medium Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dlrtp_2": _logic_module(
+        "sky130_fd_sc_ms__dlrtp_2",
+        "Medium Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dlrtp_4": _logic_module(
+        "sky130_fd_sc_ms__dlrtp_4",
+        "Medium Speed",
+        ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dlxbn_1": _logic_module(
+        "sky130_fd_sc_ms__dlxbn_1",
+        "Medium Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dlxbn_2": _logic_module(
+        "sky130_fd_sc_ms__dlxbn_2",
+        "Medium Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dlxbp_1": _logic_module(
+        "sky130_fd_sc_ms__dlxbp_1",
+        "Medium Speed",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__dlxtn_1": _logic_module(
+        "sky130_fd_sc_ms__dlxtn_1",
+        "Medium Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dlxtn_2": _logic_module(
+        "sky130_fd_sc_ms__dlxtn_2",
+        "Medium Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dlxtn_4": _logic_module(
+        "sky130_fd_sc_ms__dlxtn_4",
+        "Medium Speed",
+        ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dlxtp_1": _logic_module(
+        "sky130_fd_sc_ms__dlxtp_1",
+        "Medium Speed",
+        ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__dlygate4sd1_1": _logic_module(
+        "sky130_fd_sc_ms__dlygate4sd1_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__dlygate4sd2_1": _logic_module(
+        "sky130_fd_sc_ms__dlygate4sd2_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__dlygate4sd3_1": _logic_module(
+        "sky130_fd_sc_ms__dlygate4sd3_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__dlymetal6s2s_1": _logic_module(
+        "sky130_fd_sc_ms__dlymetal6s2s_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__dlymetal6s4s_1": _logic_module(
+        "sky130_fd_sc_ms__dlymetal6s4s_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__dlymetal6s6s_1": _logic_module(
+        "sky130_fd_sc_ms__dlymetal6s6s_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__ebufn_1": _logic_module(
+        "sky130_fd_sc_ms__ebufn_1",
+        "Medium Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__ebufn_2": _logic_module(
+        "sky130_fd_sc_ms__ebufn_2",
+        "Medium Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__ebufn_4": _logic_module(
+        "sky130_fd_sc_ms__ebufn_4",
+        "Medium Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__ebufn_8": _logic_module(
+        "sky130_fd_sc_ms__ebufn_8",
+        "Medium Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__edfxbp_1": _logic_module(
+        "sky130_fd_sc_ms__edfxbp_1",
+        "Medium Speed",
+        ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__edfxtp_1": _logic_module(
+        "sky130_fd_sc_ms__edfxtp_1",
+        "Medium Speed",
+        ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__einvn_1": _logic_module(
+        "sky130_fd_sc_ms__einvn_1",
+        "Medium Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__einvn_2": _logic_module(
+        "sky130_fd_sc_ms__einvn_2",
+        "Medium Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__einvn_4": _logic_module(
+        "sky130_fd_sc_ms__einvn_4",
+        "Medium Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__einvn_8": _logic_module(
+        "sky130_fd_sc_ms__einvn_8",
+        "Medium Speed",
+        ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__einvp_1": _logic_module(
+        "sky130_fd_sc_ms__einvp_1",
+        "Medium Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__einvp_2": _logic_module(
+        "sky130_fd_sc_ms__einvp_2",
+        "Medium Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__einvp_4": _logic_module(
+        "sky130_fd_sc_ms__einvp_4",
+        "Medium Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__einvp_8": _logic_module(
+        "sky130_fd_sc_ms__einvp_8",
+        "Medium Speed",
+        ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"],
+    ),
+    "sky130_fd_sc_ms__fa_1": _logic_module(
+        "sky130_fd_sc_ms__fa_1",
+        "Medium Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ms__fa_2": _logic_module(
+        "sky130_fd_sc_ms__fa_2",
+        "Medium Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ms__fa_4": _logic_module(
+        "sky130_fd_sc_ms__fa_4",
+        "Medium Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ms__fah_1": _logic_module(
+        "sky130_fd_sc_ms__fah_1",
+        "Medium Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ms__fah_2": _logic_module(
+        "sky130_fd_sc_ms__fah_2",
+        "Medium Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ms__fah_4": _logic_module(
+        "sky130_fd_sc_ms__fah_4",
+        "Medium Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ms__fahcin_1": _logic_module(
+        "sky130_fd_sc_ms__fahcin_1",
+        "Medium Speed",
+        ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ms__fahcon_1": _logic_module(
+        "sky130_fd_sc_ms__fahcon_1",
+        "Medium Speed",
+        ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"],
+    ),
+    "sky130_fd_sc_ms__fill_1": _logic_module(
+        "sky130_fd_sc_ms__fill_1", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__fill_2": _logic_module(
+        "sky130_fd_sc_ms__fill_2", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__fill_4": _logic_module(
+        "sky130_fd_sc_ms__fill_4", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__fill_8": _logic_module(
+        "sky130_fd_sc_ms__fill_8", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__fill_diode_2": _logic_module(
+        "sky130_fd_sc_ms__fill_diode_2", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__fill_diode_4": _logic_module(
+        "sky130_fd_sc_ms__fill_diode_4", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__fill_diode_8": _logic_module(
+        "sky130_fd_sc_ms__fill_diode_8", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__ha_1": _logic_module(
+        "sky130_fd_sc_ms__ha_1",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ms__ha_2": _logic_module(
+        "sky130_fd_sc_ms__ha_2",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ms__ha_4": _logic_module(
+        "sky130_fd_sc_ms__ha_4",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"],
+    ),
+    "sky130_fd_sc_ms__inv_1": _logic_module(
+        "sky130_fd_sc_ms__inv_1",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__inv_2": _logic_module(
+        "sky130_fd_sc_ms__inv_2",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__inv_4": _logic_module(
+        "sky130_fd_sc_ms__inv_4",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__inv_8": _logic_module(
+        "sky130_fd_sc_ms__inv_8",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__inv_16": _logic_module(
+        "sky130_fd_sc_ms__inv_16",
+        "Medium Speed",
+        ["A", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__latchupcell": _logic_module(
+        "sky130_fd_sc_ms__latchupcell", "Medium Speed", ["VGND", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__maj3_1": _logic_module(
+        "sky130_fd_sc_ms__maj3_1",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__maj3_2": _logic_module(
+        "sky130_fd_sc_ms__maj3_2",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__maj3_4": _logic_module(
+        "sky130_fd_sc_ms__maj3_4",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__mux2_1": _logic_module(
+        "sky130_fd_sc_ms__mux2_1",
+        "Medium Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__mux2_2": _logic_module(
+        "sky130_fd_sc_ms__mux2_2",
+        "Medium Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__mux2_4": _logic_module(
+        "sky130_fd_sc_ms__mux2_4",
+        "Medium Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__mux2i_1": _logic_module(
+        "sky130_fd_sc_ms__mux2i_1",
+        "Medium Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__mux2i_2": _logic_module(
+        "sky130_fd_sc_ms__mux2i_2",
+        "Medium Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__mux2i_4": _logic_module(
+        "sky130_fd_sc_ms__mux2i_4",
+        "Medium Speed",
+        ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__mux4_1": _logic_module(
+        "sky130_fd_sc_ms__mux4_1",
+        "Medium Speed",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__mux4_2": _logic_module(
+        "sky130_fd_sc_ms__mux4_2",
+        "Medium Speed",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__mux4_4": _logic_module(
+        "sky130_fd_sc_ms__mux4_4",
+        "Medium Speed",
+        ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__nand2_1": _logic_module(
+        "sky130_fd_sc_ms__nand2_1",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand2_2": _logic_module(
+        "sky130_fd_sc_ms__nand2_2",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand2_4": _logic_module(
+        "sky130_fd_sc_ms__nand2_4",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand2_8": _logic_module(
+        "sky130_fd_sc_ms__nand2_8",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand2b_1": _logic_module(
+        "sky130_fd_sc_ms__nand2b_1",
+        "Medium Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand2b_2": _logic_module(
+        "sky130_fd_sc_ms__nand2b_2",
+        "Medium Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand2b_4": _logic_module(
+        "sky130_fd_sc_ms__nand2b_4",
+        "Medium Speed",
+        ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand3_1": _logic_module(
+        "sky130_fd_sc_ms__nand3_1",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand3_2": _logic_module(
+        "sky130_fd_sc_ms__nand3_2",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand3_4": _logic_module(
+        "sky130_fd_sc_ms__nand3_4",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand3b_1": _logic_module(
+        "sky130_fd_sc_ms__nand3b_1",
+        "Medium Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand3b_2": _logic_module(
+        "sky130_fd_sc_ms__nand3b_2",
+        "Medium Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand3b_4": _logic_module(
+        "sky130_fd_sc_ms__nand3b_4",
+        "Medium Speed",
+        ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand4_1": _logic_module(
+        "sky130_fd_sc_ms__nand4_1",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand4_2": _logic_module(
+        "sky130_fd_sc_ms__nand4_2",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand4_4": _logic_module(
+        "sky130_fd_sc_ms__nand4_4",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand4b_1": _logic_module(
+        "sky130_fd_sc_ms__nand4b_1",
+        "Medium Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand4b_2": _logic_module(
+        "sky130_fd_sc_ms__nand4b_2",
+        "Medium Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand4b_4": _logic_module(
+        "sky130_fd_sc_ms__nand4b_4",
+        "Medium Speed",
+        ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand4bb_1": _logic_module(
+        "sky130_fd_sc_ms__nand4bb_1",
+        "Medium Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand4bb_2": _logic_module(
+        "sky130_fd_sc_ms__nand4bb_2",
+        "Medium Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nand4bb_4": _logic_module(
+        "sky130_fd_sc_ms__nand4bb_4",
+        "Medium Speed",
+        ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor2_1": _logic_module(
+        "sky130_fd_sc_ms__nor2_1",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor2_2": _logic_module(
+        "sky130_fd_sc_ms__nor2_2",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor2_4": _logic_module(
+        "sky130_fd_sc_ms__nor2_4",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor2_8": _logic_module(
+        "sky130_fd_sc_ms__nor2_8",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor2b_1": _logic_module(
+        "sky130_fd_sc_ms__nor2b_1",
+        "Medium Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor2b_2": _logic_module(
+        "sky130_fd_sc_ms__nor2b_2",
+        "Medium Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor2b_4": _logic_module(
+        "sky130_fd_sc_ms__nor2b_4",
+        "Medium Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor3_1": _logic_module(
+        "sky130_fd_sc_ms__nor3_1",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor3_2": _logic_module(
+        "sky130_fd_sc_ms__nor3_2",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor3_4": _logic_module(
+        "sky130_fd_sc_ms__nor3_4",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor3b_1": _logic_module(
+        "sky130_fd_sc_ms__nor3b_1",
+        "Medium Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor3b_2": _logic_module(
+        "sky130_fd_sc_ms__nor3b_2",
+        "Medium Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor3b_4": _logic_module(
+        "sky130_fd_sc_ms__nor3b_4",
+        "Medium Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor4_1": _logic_module(
+        "sky130_fd_sc_ms__nor4_1",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor4_2": _logic_module(
+        "sky130_fd_sc_ms__nor4_2",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor4_4": _logic_module(
+        "sky130_fd_sc_ms__nor4_4",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor4b_1": _logic_module(
+        "sky130_fd_sc_ms__nor4b_1",
+        "Medium Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor4b_2": _logic_module(
+        "sky130_fd_sc_ms__nor4b_2",
+        "Medium Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor4b_4": _logic_module(
+        "sky130_fd_sc_ms__nor4b_4",
+        "Medium Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor4bb_1": _logic_module(
+        "sky130_fd_sc_ms__nor4bb_1",
+        "Medium Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor4bb_2": _logic_module(
+        "sky130_fd_sc_ms__nor4bb_2",
+        "Medium Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__nor4bb_4": _logic_module(
+        "sky130_fd_sc_ms__nor4bb_4",
+        "Medium Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o2bb2a_1": _logic_module(
+        "sky130_fd_sc_ms__o2bb2a_1",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o2bb2a_2": _logic_module(
+        "sky130_fd_sc_ms__o2bb2a_2",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o2bb2a_4": _logic_module(
+        "sky130_fd_sc_ms__o2bb2a_4",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o2bb2ai_1": _logic_module(
+        "sky130_fd_sc_ms__o2bb2ai_1",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o2bb2ai_2": _logic_module(
+        "sky130_fd_sc_ms__o2bb2ai_2",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o2bb2ai_4": _logic_module(
+        "sky130_fd_sc_ms__o2bb2ai_4",
+        "Medium Speed",
+        ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o21a_1": _logic_module(
+        "sky130_fd_sc_ms__o21a_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o21a_2": _logic_module(
+        "sky130_fd_sc_ms__o21a_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o21a_4": _logic_module(
+        "sky130_fd_sc_ms__o21a_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o21ai_1": _logic_module(
+        "sky130_fd_sc_ms__o21ai_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o21ai_2": _logic_module(
+        "sky130_fd_sc_ms__o21ai_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o21ai_4": _logic_module(
+        "sky130_fd_sc_ms__o21ai_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o21ba_1": _logic_module(
+        "sky130_fd_sc_ms__o21ba_1",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o21ba_2": _logic_module(
+        "sky130_fd_sc_ms__o21ba_2",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o21ba_4": _logic_module(
+        "sky130_fd_sc_ms__o21ba_4",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o21bai_1": _logic_module(
+        "sky130_fd_sc_ms__o21bai_1",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o21bai_2": _logic_module(
+        "sky130_fd_sc_ms__o21bai_2",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o21bai_4": _logic_module(
+        "sky130_fd_sc_ms__o21bai_4",
+        "Medium Speed",
+        ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o22a_1": _logic_module(
+        "sky130_fd_sc_ms__o22a_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o22a_2": _logic_module(
+        "sky130_fd_sc_ms__o22a_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o22a_4": _logic_module(
+        "sky130_fd_sc_ms__o22a_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o22ai_1": _logic_module(
+        "sky130_fd_sc_ms__o22ai_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o22ai_2": _logic_module(
+        "sky130_fd_sc_ms__o22ai_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o22ai_4": _logic_module(
+        "sky130_fd_sc_ms__o22ai_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o31a_1": _logic_module(
+        "sky130_fd_sc_ms__o31a_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o31a_2": _logic_module(
+        "sky130_fd_sc_ms__o31a_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o31a_4": _logic_module(
+        "sky130_fd_sc_ms__o31a_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o31ai_1": _logic_module(
+        "sky130_fd_sc_ms__o31ai_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o31ai_2": _logic_module(
+        "sky130_fd_sc_ms__o31ai_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o31ai_4": _logic_module(
+        "sky130_fd_sc_ms__o31ai_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o32a_1": _logic_module(
+        "sky130_fd_sc_ms__o32a_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o32a_2": _logic_module(
+        "sky130_fd_sc_ms__o32a_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o32a_4": _logic_module(
+        "sky130_fd_sc_ms__o32a_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o32ai_1": _logic_module(
+        "sky130_fd_sc_ms__o32ai_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o32ai_2": _logic_module(
+        "sky130_fd_sc_ms__o32ai_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o32ai_4": _logic_module(
+        "sky130_fd_sc_ms__o32ai_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o41a_1": _logic_module(
+        "sky130_fd_sc_ms__o41a_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o41a_2": _logic_module(
+        "sky130_fd_sc_ms__o41a_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o41a_4": _logic_module(
+        "sky130_fd_sc_ms__o41a_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o41ai_1": _logic_module(
+        "sky130_fd_sc_ms__o41ai_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o41ai_2": _logic_module(
+        "sky130_fd_sc_ms__o41ai_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o41ai_4": _logic_module(
+        "sky130_fd_sc_ms__o41ai_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o211a_1": _logic_module(
+        "sky130_fd_sc_ms__o211a_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o211a_2": _logic_module(
+        "sky130_fd_sc_ms__o211a_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o211a_4": _logic_module(
+        "sky130_fd_sc_ms__o211a_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o211ai_1": _logic_module(
+        "sky130_fd_sc_ms__o211ai_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o211ai_2": _logic_module(
+        "sky130_fd_sc_ms__o211ai_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o211ai_4": _logic_module(
+        "sky130_fd_sc_ms__o211ai_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o221a_1": _logic_module(
+        "sky130_fd_sc_ms__o221a_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o221a_2": _logic_module(
+        "sky130_fd_sc_ms__o221a_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o221a_4": _logic_module(
+        "sky130_fd_sc_ms__o221a_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o221ai_1": _logic_module(
+        "sky130_fd_sc_ms__o221ai_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o221ai_2": _logic_module(
+        "sky130_fd_sc_ms__o221ai_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o221ai_4": _logic_module(
+        "sky130_fd_sc_ms__o221ai_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o311a_1": _logic_module(
+        "sky130_fd_sc_ms__o311a_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o311a_2": _logic_module(
+        "sky130_fd_sc_ms__o311a_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o311a_4": _logic_module(
+        "sky130_fd_sc_ms__o311a_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o311ai_1": _logic_module(
+        "sky130_fd_sc_ms__o311ai_1",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o311ai_2": _logic_module(
+        "sky130_fd_sc_ms__o311ai_2",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o311ai_4": _logic_module(
+        "sky130_fd_sc_ms__o311ai_4",
+        "Medium Speed",
+        ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o2111a_1": _logic_module(
+        "sky130_fd_sc_ms__o2111a_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o2111a_2": _logic_module(
+        "sky130_fd_sc_ms__o2111a_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o2111a_4": _logic_module(
+        "sky130_fd_sc_ms__o2111a_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__o2111ai_1": _logic_module(
+        "sky130_fd_sc_ms__o2111ai_1",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o2111ai_2": _logic_module(
+        "sky130_fd_sc_ms__o2111ai_2",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__o2111ai_4": _logic_module(
+        "sky130_fd_sc_ms__o2111ai_4",
+        "Medium Speed",
+        ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__or2_1": _logic_module(
+        "sky130_fd_sc_ms__or2_1",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or2_2": _logic_module(
+        "sky130_fd_sc_ms__or2_2",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or2_4": _logic_module(
+        "sky130_fd_sc_ms__or2_4",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or2b_1": _logic_module(
+        "sky130_fd_sc_ms__or2b_1",
+        "Medium Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or2b_2": _logic_module(
+        "sky130_fd_sc_ms__or2b_2",
+        "Medium Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or2b_4": _logic_module(
+        "sky130_fd_sc_ms__or2b_4",
+        "Medium Speed",
+        ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or3_1": _logic_module(
+        "sky130_fd_sc_ms__or3_1",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or3_2": _logic_module(
+        "sky130_fd_sc_ms__or3_2",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or3_4": _logic_module(
+        "sky130_fd_sc_ms__or3_4",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or3b_1": _logic_module(
+        "sky130_fd_sc_ms__or3b_1",
+        "Medium Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or3b_2": _logic_module(
+        "sky130_fd_sc_ms__or3b_2",
+        "Medium Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or3b_4": _logic_module(
+        "sky130_fd_sc_ms__or3b_4",
+        "Medium Speed",
+        ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or4_1": _logic_module(
+        "sky130_fd_sc_ms__or4_1",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or4_2": _logic_module(
+        "sky130_fd_sc_ms__or4_2",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or4_4": _logic_module(
+        "sky130_fd_sc_ms__or4_4",
+        "Medium Speed",
+        ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or4b_1": _logic_module(
+        "sky130_fd_sc_ms__or4b_1",
+        "Medium Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or4b_2": _logic_module(
+        "sky130_fd_sc_ms__or4b_2",
+        "Medium Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or4b_4": _logic_module(
+        "sky130_fd_sc_ms__or4b_4",
+        "Medium Speed",
+        ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or4bb_1": _logic_module(
+        "sky130_fd_sc_ms__or4bb_1",
+        "Medium Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or4bb_2": _logic_module(
+        "sky130_fd_sc_ms__or4bb_2",
+        "Medium Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__or4bb_4": _logic_module(
+        "sky130_fd_sc_ms__or4bb_4",
+        "Medium Speed",
+        ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__sdfbbn_1": _logic_module(
+        "sky130_fd_sc_ms__sdfbbn_1",
+        "Medium Speed",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_ms__sdfbbn_2": _logic_module(
+        "sky130_fd_sc_ms__sdfbbn_2",
+        "Medium Speed",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR"],
+    ),
+    "sky130_fd_sc_ms__sdfbbp_1": _logic_module(
+        "sky130_fd_sc_ms__sdfbbp_1",
+        "Medium Speed",
+        [
+            "CLK",
+            "D",
+            "RESET_B",
+            "SCD",
+            "SCE",
+            "SET_B",
+            "VGND",
+            "VNB",
+            "VPB",
+            "VPWR",
+            "Q",
+        ],
+    ),
+    "sky130_fd_sc_ms__sdfrbp_1": _logic_module(
+        "sky130_fd_sc_ms__sdfrbp_1",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__sdfrbp_2": _logic_module(
+        "sky130_fd_sc_ms__sdfrbp_2",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__sdfrtn_1": _logic_module(
+        "sky130_fd_sc_ms__sdfrtn_1",
+        "Medium Speed",
+        ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sdfrtp_1": _logic_module(
+        "sky130_fd_sc_ms__sdfrtp_1",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sdfrtp_2": _logic_module(
+        "sky130_fd_sc_ms__sdfrtp_2",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sdfrtp_4": _logic_module(
+        "sky130_fd_sc_ms__sdfrtp_4",
+        "Medium Speed",
+        ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sdfsbp_1": _logic_module(
+        "sky130_fd_sc_ms__sdfsbp_1",
+        "Medium Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__sdfsbp_2": _logic_module(
+        "sky130_fd_sc_ms__sdfsbp_2",
+        "Medium Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__sdfstp_1": _logic_module(
+        "sky130_fd_sc_ms__sdfstp_1",
+        "Medium Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sdfstp_2": _logic_module(
+        "sky130_fd_sc_ms__sdfstp_2",
+        "Medium Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sdfstp_4": _logic_module(
+        "sky130_fd_sc_ms__sdfstp_4",
+        "Medium Speed",
+        ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sdfxbp_1": _logic_module(
+        "sky130_fd_sc_ms__sdfxbp_1",
+        "Medium Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__sdfxbp_2": _logic_module(
+        "sky130_fd_sc_ms__sdfxbp_2",
+        "Medium Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__sdfxtp_1": _logic_module(
+        "sky130_fd_sc_ms__sdfxtp_1",
+        "Medium Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sdfxtp_2": _logic_module(
+        "sky130_fd_sc_ms__sdfxtp_2",
+        "Medium Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sdfxtp_4": _logic_module(
+        "sky130_fd_sc_ms__sdfxtp_4",
+        "Medium Speed",
+        ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sdlclkp_1": _logic_module(
+        "sky130_fd_sc_ms__sdlclkp_1",
+        "Medium Speed",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ms__sdlclkp_2": _logic_module(
+        "sky130_fd_sc_ms__sdlclkp_2",
+        "Medium Speed",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ms__sdlclkp_4": _logic_module(
+        "sky130_fd_sc_ms__sdlclkp_4",
+        "Medium Speed",
+        ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"],
+    ),
+    "sky130_fd_sc_ms__sedfxbp_1": _logic_module(
+        "sky130_fd_sc_ms__sedfxbp_1",
+        "Medium Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__sedfxbp_2": _logic_module(
+        "sky130_fd_sc_ms__sedfxbp_2",
+        "Medium Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"],
+    ),
+    "sky130_fd_sc_ms__sedfxtp_1": _logic_module(
+        "sky130_fd_sc_ms__sedfxtp_1",
+        "Medium Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sedfxtp_2": _logic_module(
+        "sky130_fd_sc_ms__sedfxtp_2",
+        "Medium Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__sedfxtp_4": _logic_module(
+        "sky130_fd_sc_ms__sedfxtp_4",
+        "Medium Speed",
+        ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"],
+    ),
+    "sky130_fd_sc_ms__tap_1": _logic_module(
+        "sky130_fd_sc_ms__tap_1", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__tap_2": _logic_module(
+        "sky130_fd_sc_ms__tap_2", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__tapmet1_2": _logic_module(
+        "sky130_fd_sc_ms__tapmet1_2", "Medium Speed", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__tapvgnd2_1": _logic_module(
+        "sky130_fd_sc_ms__tapvgnd2_1", "Medium Speed", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__tapvgnd_1": _logic_module(
+        "sky130_fd_sc_ms__tapvgnd_1", "Medium Speed", ["VGND", "VPB", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__tapvpwrvgnd_1": _logic_module(
+        "sky130_fd_sc_ms__tapvpwrvgnd_1", "Medium Speed", ["VGND", "VPWR"]
+    ),
+    "sky130_fd_sc_ms__xnor2_1": _logic_module(
+        "sky130_fd_sc_ms__xnor2_1",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__xnor2_2": _logic_module(
+        "sky130_fd_sc_ms__xnor2_2",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__xnor2_4": _logic_module(
+        "sky130_fd_sc_ms__xnor2_4",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"],
+    ),
+    "sky130_fd_sc_ms__xnor3_1": _logic_module(
+        "sky130_fd_sc_ms__xnor3_1",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__xnor3_2": _logic_module(
+        "sky130_fd_sc_ms__xnor3_2",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__xnor3_4": _logic_module(
+        "sky130_fd_sc_ms__xnor3_4",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__xor2_1": _logic_module(
+        "sky130_fd_sc_ms__xor2_1",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__xor2_2": _logic_module(
+        "sky130_fd_sc_ms__xor2_2",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__xor2_4": _logic_module(
+        "sky130_fd_sc_ms__xor2_4",
+        "Medium Speed",
+        ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__xor3_1": _logic_module(
+        "sky130_fd_sc_ms__xor3_1",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__xor3_2": _logic_module(
+        "sky130_fd_sc_ms__xor3_2",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+    "sky130_fd_sc_ms__xor3_4": _logic_module(
+        "sky130_fd_sc_ms__xor3_4",
+        "Medium Speed",
+        ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"],
+    ),
+}
+
+# Collected `ExternalModule`s are stored in the `modules` namespace
+modules = SimpleNamespace()
+
+# Add each to the `modules` namespace
+for name, mod in xtors.items():
+    setattr(modules, name[0], mod)
+for name, mod in ress.items():
+    setattr(modules, name, mod)
+for name, mod in caps.items():
+    setattr(modules, name, mod)
+for name, mod in diodes.items():
+    setattr(modules, name, mod)
+for name, mod in bjts.items():
+    setattr(modules, name, mod)
+for name, mod in vpps.items():
+    setattr(modules, name, mod)
+for name, mod in hd.items():
+    setattr(modules, name, mod)
+for name, mod in hdll.items():
+    setattr(modules, name, mod)
+for name, mod in hs.items():
+    setattr(modules, name, mod)
+for name, mod in hvl.items():
+    setattr(modules, name, mod)
+for name, mod in lp.items():
+    setattr(modules, name, mod)
+for name, mod in ls.items():
+    setattr(modules, name, mod)
+for name, mod in ms.items():
+    setattr(modules, name, mod)
+
+
+@dataclass
+class Cache:
+    """# Module-Scope Cache(s)"""
+
+    mos_modcalls: Dict[MosParams, h.ExternalModuleCall] = field(default_factory=dict)
+
+    res_modcalls: Dict[PhysicalResistorParams, h.ExternalModuleCall] = field(
+        default_factory=dict
+    )
+
+    cap_modcalls: Dict[PhysicalCapacitorParams, h.ExternalModuleCall] = field(
+        default_factory=dict
+    )
+
+    diode_modcalls: Dict[DiodeParams, h.ExternalModule] = field(default_factory=dict)
+
+    bjt_modcalls: Dict[BipolarParams, h.ExternalModule] = field(default_factory=dict)
+
+
+CACHE = Cache()
+
+"""
+This section of code defines default sizes for various electronic components in the Sky130 technology,
+including transistors, resistors, and capacitors. Default dimensions are provided in microns or PDK units,
+with the sizes stored in dictionaries: default_xtor_size for transistors, default_gen_res_size for generic resistors,
+default_prec_res_L for precise resistors, and default_cap_sizes for capacitors.
+These default sizes are important for creating instances of the components with proper dimensions,
+ensuring correct layout and performance in the circuit designs.
+"""
+
+# Default param dicts
+default_xtor_size = {
+    "sky130_fd_pr__nfet_01v8": (h.Scalar(inner=0.420 * µ), h.Scalar(inner=0.150 * µ)),
+    "sky130_fd_pr__nfet_01v8_lvt": (
+        h.Scalar(inner=0.420 * µ),
+        h.Scalar(inner=0.150 * µ),
+    ),
+    "sky130_fd_pr__pfet_01v8": (h.Scalar(inner=0.550 * µ), h.Scalar(inner=0.150 * µ)),
+    "sky130_fd_pr__pfet_01v8_hvt": (
+        h.Scalar(inner=0.550 * µ),
+        h.Scalar(inner=0.150 * µ),
+    ),
+    "sky130_fd_pr__pfet_01v8_lvt": (
+        h.Scalar(inner=0.550 * µ),
+        h.Scalar(inner=0.350 * µ),
+    ),
+    "sky130_fd_pr__pfet_g5v0d10v5": (
+        h.Scalar(inner=0.420 * µ),
+        h.Scalar(inner=0.500 * µ),
+    ),
+    "sky130_fd_pr__nfet_g5v0d10v5": (
+        h.Scalar(inner=0.420 * µ),
+        h.Scalar(inner=0.500 * µ),
+    ),
+    "sky130_fd_pr__pfet_g5v0d16v0": (
+        h.Scalar(inner=5.000 * µ),
+        h.Scalar(inner=0.660 * µ),
+    ),
+    "sky130_fd_pr__nfet_20v0": (h.Scalar(inner=29.410 * µ), h.Scalar(inner=2.950 * µ)),
+    "sky130_fd_pr__nfet_20v0_zvt": (
+        h.Scalar(inner=30.000 * µ),
+        h.Scalar(inner=1.500 * µ),
+    ),
+    "sky130_fd_pr__nfet_20v0_iso": (
+        h.Scalar(inner=30.000 * µ),
+        h.Scalar(inner=1.500 * µ),
+    ),
+    "sky130_fd_pr__pfet_20v0": (h.Scalar(inner=30.000 * µ), h.Scalar(inner=1.000 * µ)),
+    "sky130_fd_pr__nfet_03v3_nvt": (
+        h.Scalar(inner=0.700 * µ),
+        h.Scalar(inner=0.500 * µ),
+    ),
+    "sky130_fd_pr__nfet_05v0_nvt": (
+        h.Scalar(inner=0.700 * µ),
+        h.Scalar(inner=0.900 * µ),
+    ),
+    "sky130_fd_pr__nfet_20v0_nvt": (
+        h.Scalar(inner=30.000 * µ),
+        h.Scalar(inner=1.000 * µ),
+    ),
+    "sky130_fd_pr__esd_nfet_01v8": (
+        h.Scalar(inner=20.350 * µ),
+        h.Scalar(inner=0.165 * µ),
+    ),
+    "sky130_fd_pr__esd_nfet_g5v0d10v5": (
+        h.Scalar(inner=14.500 * µ),
+        h.Scalar(inner=0.550 * µ),
+    ),
+    "sky130_fd_pr__esd_nfet_g5v0d10v5_nvt": (
+        h.Scalar(inner=10.000 * µ),
+        h.Scalar(inner=0.900 * µ),
+    ),
+    "sky130_fd_pr__esd_pfet_g5v0d10v5": (
+        h.Scalar(inner=14.500 * µ),
+        h.Scalar(inner=0.550 * µ),
+    ),
+}
+
+default_gen_res_size = {
+    "sky130_fd_pr__res_generic_po": (
+        h.Scalar(inner=0.720 * µ),
+        h.Scalar(inner=0.290 * µ),
+    ),
+    "sky130_fd_pr__res_generic_l1": (
+        h.Scalar(inner=0.720 * µ),
+        h.Scalar(inner=0.290 * µ),
+    ),
+    "sky130_fd_pr__res_generic_m1": (
+        h.Scalar(inner=0.720 * µ),
+        h.Scalar(inner=0.290 * µ),
+    ),
+    "sky130_fd_pr__res_generic_m2": (
+        h.Scalar(inner=0.720 * µ),
+        h.Scalar(inner=0.290 * µ),
+    ),
+    "sky130_fd_pr__res_generic_m3": (
+        h.Scalar(inner=0.720 * µ),
+        h.Scalar(inner=0.290 * µ),
+    ),
+    "sky130_fd_pr__res_generic_m4": (
+        h.Scalar(inner=0.720 * µ),
+        h.Scalar(inner=0.290 * µ),
+    ),
+    "sky130_fd_pr__res_generic_m5": (
+        h.Scalar(inner=0.720 * µ),
+        h.Scalar(inner=0.290 * µ),
+    ),
+    "sky130_fd_pr__res_generic_nd": (
+        h.Scalar(inner=0.150 * µ),
+        h.Scalar(inner=0.270 * µ),
+    ),
+    "sky130_fd_pr__res_generic_pd": (
+        h.Scalar(inner=0.150 * µ),
+        h.Scalar(inner=0.270 * µ),
+    ),
+    # FIXME: This value is lifted from xschem but can't be found in documentation
+    "sky130_fd_pr__res_iso_pw": (h.Scalar(inner=2.650 * µ), h.Scalar(inner=2.650 * µ)),
+}
+
+# These have to be left in microns for parsing reasons
+default_prec_res_L = {
+    "sky130_fd_pr__res_high_po_0p35": h.Scalar(inner=0.350),
+    "sky130_fd_pr__res_high_po_0p69": h.Scalar(inner=0.690),
+    "sky130_fd_pr__res_high_po_1p41": h.Scalar(inner=1.410),
+    "sky130_fd_pr__res_high_po_2p85": h.Scalar(inner=2.850),
+    "sky130_fd_pr__res_high_po_5p73": h.Scalar(inner=5.300),
+    "sky130_fd_pr__res_xhigh_po_0p35": h.Scalar(inner=0.350),
+    "sky130_fd_pr__res_xhigh_po_0p69": h.Scalar(inner=0.690),
+    "sky130_fd_pr__res_xhigh_po_1p41": h.Scalar(inner=1.410),
+    "sky130_fd_pr__res_xhigh_po_2p85": h.Scalar(inner=2.850),
+    "sky130_fd_pr__res_xhigh_po_5p73": h.Scalar(inner=5.300),
+}
+
+default_cap_sizes = {
+    # FIXME: Using documentation minimum sizing not sure of correct answer
+    "sky130_fd_pr__cap_mim_m3_1": (
+        h.Scalar(inner=2.000 * µ),
+        h.Scalar(inner=2.000 * µ),
+    ),
+    "sky130_fd_pr__cap_mim_m3_2": (
+        h.Scalar(inner=2.000 * µ),
+        h.Scalar(inner=2.000 * µ),
+    ),
+    "sky130_fd_pr__cap_var_lvt": (h.Scalar(inner=0.180 * µ), h.Scalar(inner=0.180 * µ)),
+    "sky130_fd_pr__cap_var_hvt": (h.Scalar(inner=0.180 * µ), h.Scalar(inner=0.180 * µ)),
+}
diff --git a/pdks/Sky130/sky130/pdk_logic.py b/pdks/Sky130/sky130/pdk_logic.py
new file mode 100644
index 0000000..56d2274
--- /dev/null
+++ b/pdks/Sky130/sky130/pdk_logic.py
@@ -0,0 +1,424 @@
+""" 
+
+# Hdl21 + SkyWater 130nm Open-Source PDK Modules and Transformations 
+
+Defines a set of `hdl21.ExternalModule`s comprising the essential devices of the SkyWater 130nm open-source PDK, '
+and an `hdl21pdk.netlist` method for converting process-portable `hdl21.Primitive` elements into these modules. 
+
+The complete 130nm design kit includes hundreds of devices. A small subset are targets for conversion from `hdl21.Primitive`. 
+They include: 
+
+* "Core" Mos transistors `sky130_fd_pr__{nfet,pfet}_01v8{,_lvt,_hvt}
+
+And may in the near future also include: 
+
+* Resistors `sky130_fd_pr__res_*`
+* Capacitors `sky130_fd_pr__cap_*`
+* Bipolar Transistors `sky130_fd_pr__{npn,pnp}_*`
+* Diodes, which the PDK provides as SPICE `.model` statements alone, and will correspondingly need to be `hdl21.Module`s. 
+
+Many of the latter include a variety of "de-parameterization" steps not yet tested by this package's authors.  
+
+Remaining devices can be added to user-projects as `hdl21.ExternalModule`s, 
+or added to this package via pull request.  
+
+"""
+
+# Std-Lib Imports
+from pathlib import Path
+from typing import Dict, Optional, Any
+
+# PyPi Imports
+from pydantic.dataclasses import dataclass
+
+# Hdl21 Imports
+import hdl21 as h
+from hdl21.prefix import MILLI, TERA, MEGA
+from hdl21.pdk import PdkInstallation
+from hdl21.primitives import (
+    Mos,
+    PhysicalResistor,
+    PhysicalCapacitor,
+    Diode,
+    Bipolar,
+    ThreeTerminalResistor,
+    ThreeTerminalCapacitor,
+    MosParams,
+    PhysicalResistorParams,
+    PhysicalCapacitorParams,
+    DiodeParams,
+    BipolarParams,
+)
+
+# Import relevant data from the PDK's data module
+from .pdk_data import *
+
+
+@dataclass
+class Install(PdkInstallation):
+    """
+    PDK Installation Data for the Sky130 process.
+
+    This class represents site-specific PDK installation information, including paths to
+    the PDK installation, library files, and SPICE models reference. It also provides a
+    method to include the appropriate model files for a given process corner.
+
+    Attributes:
+        pdk_path (Path): Path to the PDK installation.
+        lib_path (Path): Relative path to the PDK ngspice library file.
+        model_ref (Path): Relative path to the PDK SPICE models reference.
+    """
+
+    pdk_path: Path  # Path to PDK installation
+    lib_path: Path  # Relative path to PDK ngpisce library file
+    model_ref: Path  # Relative path to PDK SPICE models reference
+
+    def include(self, corner: h.pdk.Corner) -> h.sim.Lib:
+        """
+        Get the model include file for the specified process corner.
+
+        This method returns the appropriate model include file for the given process corner.
+        It checks if the provided corner is a valid h.pdk.Corner instance and raises a
+        ValueError if it is not.
+
+        Args:
+            corner (h.pdk.Corner): The process corner for which to retrieve the model include file.
+
+        Returns:
+            h.sim.Lib: The model include file for the specified process corner.
+
+        Raises:
+            ValueError: If an invalid process corner is provided.
+        """
+
+        mos_corners: Dict[h.pdk.Corner, str] = {
+            h.pdk.Corner.TYP: "tt",
+            h.pdk.Corner.FAST: "ff",
+            h.pdk.Corner.SLOW: "ss",
+        }
+        if not isinstance(corner, h.pdk.Corner) or corner not in mos_corners:
+            raise ValueError(f"Invalid corner {corner}")
+
+        return h.sim.Lib(
+            path=self.pdk_path / self.lib_path, section=mos_corners[corner]
+        )
+
+    singleton: Optional["Install"] = None
+
+    @classmethod
+    def instance(cls) -> "Install":
+        if cls.singleton is None:
+            raise ValueError("The Install instance has not been initialized yet.")
+        return cls.singleton
+
+    def __post_init__(self):
+        if Install.singleton is not None:
+            raise ValueError("The Install instance has already been initialized.")
+        Install.singleton = self
+
+
+class Sky130Walker(h.HierarchyWalker):
+    """Hierarchical Walker, converting `h.Primitive` instances to process-defined `ExternalModule`s."""
+
+    def __init__(self):
+        super().__init__()
+        # Caches of our external module calls
+        self.mos_modcalls = dict()
+        self.res_modcalls = dict()
+        self.cap_modcalls = dict()
+        self.diode_modcalls = dict()
+        self.bjt_modcalls = dict()
+
+    def visit_primitive_call(self, call: h.PrimitiveCall) -> h.Instantiable:
+        """Replace instances of `h.primitive.Mos` with our `ExternalModule`s"""
+        # Replace transistors
+        if call.prim is Mos:
+            return self.mos_module_call(call.params)
+
+        elif call.prim is PhysicalResistor or call.prim is ThreeTerminalResistor:
+            return self.res_module_call(call.params)
+
+        elif call.prim is PhysicalCapacitor or call.prim is ThreeTerminalCapacitor:
+            return self.cap_module_call(call.params)
+
+        elif call.prim is Diode:
+            return self.diode_module_call(call.params)
+
+        elif call.prim is Bipolar:
+            return self.bjt_module_call(call.params)
+
+        else:
+            raise RuntimeError(f"{call.prim} is not legitimate primitive")
+
+        # Return everything else as-is
+        return call
+
+    def mos_module(self, params: MosParams) -> h.ExternalModule:
+        """Retrieve or create an `ExternalModule` for a MOS of parameters `params`."""
+        if params.model is not None:
+
+            try:
+                return [v for k, v in xtors.items() if params.model in k][0]
+            except IndexError:
+                msg = f"No Mos module for model name {(params.model)}"
+                raise RuntimeError(msg)
+
+        """
+        Here we wittle down our list of potential candidates
+
+        General parameters we're concerned with are:
+
+        1) h.MosType - Most important decision is it a PMOS or an NMOS, default = NMOS
+        2) h.MosFamily - Detemines what class of transistor, CORE, IO, HVT, default = CORE
+        3) h.MosVth - Mos Threshold, HIGH, STD, LOW, ULTRA_LOW, default = STD
+        """
+
+        # Map none to default, otherwise leave alone
+        mostype = h.MosType.NMOS if params.tp is None else params.tp
+        mosfam = h.MosFamily.CORE if params.family is None else params.family
+        mosvth = h.MosVth.STD if params.vth is None else params.vth
+        args = (mostype, mosfam, mosvth)
+
+        # Find all the xtors that match the args
+        subset = {}
+        for k, v in xtors.items():
+
+            match = False
+            for a in args:
+                if a not in k:
+                    break
+            else:
+                match = True
+
+            if match:
+                subset[k] = v
+
+        # FIXME: Probably should be an error...
+        # if len(subset) > 2:
+        #     msg = f"Mos module choice not well-defined given parameters {args}"
+        #     raise RuntimeError(msg)
+
+        # Return the first one (supported as of 3.7)
+        return next(iter(subset.values()))
+
+    def mos_module_call(self, params: MosParams) -> h.ExternalModuleCall:
+        """Retrieve or create a `Call` for MOS parameters `params`."""
+        # First check our cache
+        if params in CACHE.mos_modcalls:
+            return CACHE.mos_modcalls[params]
+
+        # Not found; create a new `ExternalModuleCall`.
+        # First retrieve the `ExternalModule`.
+        mod = self.mos_module(params)
+
+        w, l = self.use_defaults(params, mod.name, default_xtor_size)
+
+        # Select appropriate parameters for 20V/ESD-G5V0D10V5 mosfets
+        if "20v" in mod.name:
+
+            modparams = Sky130Mos20VParams(w=w, l=l, m=params.mult)
+
+        else:
+
+            modparams = Sky130MosParams(
+                w=w,
+                l=l,
+                nf=params.npar,  # FIXME: renaming
+                mult=params.mult,
+            )
+
+        # Combine the two into a call, cache and return it
+        modcall = mod(modparams)
+        CACHE.mos_modcalls[params] = modcall
+        return modcall
+
+    def res_module(self, params: PhysicalResistorParams):
+        """Retrieve or create an `ExternalModule` for a Resistor of parameters `params`."""
+        mod = ress.get((params.model), None)
+
+        if mod is None:
+            msg = f"No Res module for model {params.model}"
+            raise RuntimeError(msg)
+
+        return mod
+
+    def res_module_call(self, params: PhysicalResistorParams):
+
+        # First check our cache
+        if params in CACHE.res_modcalls:
+            return CACHE.res_modcalls[params]
+
+        mod = self.res_module(params)
+
+        if mod.paramtype == Sky130GenResParams:
+
+            w, l = self.use_defaults(params, mod.name, default_gen_res_size)
+
+            modparams = Sky130GenResParams(w=w, l=l)
+
+        elif mod.paramtype == Sky130PrecResParams:
+
+            l = default_prec_res_L[mod.name]
+
+            modparams = Sky130PrecResParams(l=l)
+
+        modcall = mod(modparams)
+        CACHE.res_modcalls[params] = modcall
+        return modcall
+
+    def cap_module(self, params: Any):
+        """Retrieve or create an `ExternalModule` for a Capacitor of parameters `params`."""
+        mod = caps.get((params.model), None)
+
+        if mod is None:
+            msg = f"No Capacitor module for model {params.model}"
+            raise RuntimeError(msg)
+
+        return mod
+
+    def cap_module_call(self, params: PhysicalCapacitorParams):
+
+        if params in CACHE.cap_modcalls:
+            return CACHE.cap_modcalls[params]
+
+        mod = self.cap_module(params)
+
+        m = 1
+
+        if params.mult is not None:
+
+            m = int(params.mult)
+
+        if mod.paramtype == Sky130MimParams:
+
+            w, l = self.use_defaults(params, mod.name, default_cap_sizes)
+            modparams = Sky130MimParams(w=w, l=l, mf=m)
+
+        elif mod.paramtype == Sky130VarParams:
+
+            w, l = self.use_defaults(params, mod.name, default_cap_sizes)
+            modparams = Sky130VarParams(w=w, l=l, vm=m)
+
+        modcall = mod(modparams)
+        CACHE.cap_modcalls[params] = modcall
+        return modcall
+
+    def diode_module(self, params: DiodeParams):
+        """Retrieve or create an `ExternalModule` for a Diode of parameters `params`."""
+        mod = diodes.get((params.model), None)
+
+        if mod is None:
+            msg = f"No Diode module for model {params.model}"
+            raise RuntimeError(msg)
+
+        return mod
+
+    def diode_module_call(self, params: DiodeParams):
+
+        if params in CACHE.diode_modcalls:
+            return CACHE.diode_modcalls[params]
+
+        mod = self.diode_module(params)
+
+        if params.w is not None and params.w is not None:
+
+            # This scaling is a quirk of SKY130
+            a = params.w * params.l * 1 * TERA
+            pj = 2 * (params.w + params.l) * MEGA
+            modparams = Sky130DiodeParams(area=a, pj=pj)
+
+        else:
+
+            modparams = Sky130DiodeParams()
+
+        modcall = mod(modparams)
+        CACHE.diode_modcalls[params] = modcall
+        return modcall
+
+    def bjt_module(self, params: BipolarParams):
+        """Retrieve or create an `ExternalModule` for a Bipolar of parameters `params`."""
+        mod = bjts.get(params.model, None)
+
+        if mod is None:
+            msg = f"No Bipolar module for model {params.model}"
+            raise RuntimeError(msg)
+
+        return mod
+
+    def bjt_module_call(self, params: BipolarParams):
+
+        if params in CACHE.bjt_modcalls:
+            return CACHE.bjt_modcalls[params]
+
+        mod = self.bjt_module(params)
+
+        if params.mult is not None:
+            mult = int(params.mult)
+        else:
+            mult = 1
+
+        modparams = Sky130BipolarParams(m=mult)
+
+        modcall = mod(modparams)
+        CACHE.bjt_modcalls[params] = modcall
+        return modcall
+
+    def scale_param(self, orig: Optional[h.Scalar], default: h.Prefixed) -> h.Scalar:
+        """Replace device size parameter-value `orig`.
+        Primarily type-dispatches across the need to scale to microns for this PDK."""
+        if orig is None:
+            return default
+        if not isinstance(orig, h.Scalar):
+            raise TypeError(f"Invalid Scalar parameter {orig}")
+        inner = orig.inner
+        if isinstance(inner, h.Prefixed):
+            return h.Scalar(inner=inner * MEGA)
+        if isinstance(inner, h.Literal):
+            return h.Scalar(inner=h.Literal(f"({inner} * 1e6)"))
+        raise TypeError(f"Param Value {inner}")
+
+    def use_defaults(self, params: h.paramclass, modname: str, defaults: dict):
+
+        w, l = None, None
+
+        if params.w is None:
+
+            w = defaults[modname][0]
+
+        else:
+
+            w = params.w
+
+        if params.l is None:
+
+            l = defaults[modname][1]
+
+        else:
+
+            l = params.l
+
+        w = self.scale_param(w, 1000 * MILLI)
+        l = self.scale_param(l, 1000 * MILLI)
+
+        return w, l
+
+
+def compile(src: h.Elaboratables) -> None:
+    """
+    Compile the given `src` into the Sample technology using the Sky130 process.
+
+    This function uses the Sky130Walker class to walk through the hierarchy of the input `src`
+    and replace instances of h.Primitive with process-defined ExternalModules. The Sky130Walker
+    class takes care of replacing different primitive components such as MOS transistors, resistors,
+    capacitors, diodes, and bipolar junction transistors with their respective Sky130 technology
+    counterparts.
+
+    Args:
+        src (h.Elaboratables): The input source representing the circuit to be compiled
+            into the Sample technology using the Sky130 process.
+
+    Returns:
+        None
+    """
+
+    Sky130Walker().walk(src)
diff --git a/pdks/Sky130/sky130/scripts/parse_digital_cells.py b/pdks/Sky130/sky130/scripts/parse_digital_cells.py
new file mode 100644
index 0000000..899b7fc
--- /dev/null
+++ b/pdks/Sky130/sky130/scripts/parse_digital_cells.py
@@ -0,0 +1,37 @@
+def parse_spice_file(file_path, library):
+    logic_modules = []
+
+    acronym = "".join([l[0] for l in library.split()])
+
+    logic_modules.append(acronym + " : Dict[str : h.ExternalModule] = {")
+
+    with open(file_path, "r") as f:
+        for line in f:
+            if line.startswith(".subckt"):
+                # Remove '.subckt' and split the line into words
+                elements = line[7:].split()
+
+                modname = elements[0]
+                # Get the port list
+                ports = elements[1:]
+
+                # Create the logic module string
+                logic_module = (
+                    f'\t "{modname}" : _logic_module("{modname}","{library}",{ports}),'
+                )
+                logic_modules.append(logic_module)
+
+    logic_modules.append("}")
+
+    return logic_modules
+
+
+def write_parser_file(logic_modules, output_file):
+    with open(output_file, "w") as f:
+        for module in logic_modules:
+            f.write(module + "\n")
+
+
+# Example usage:
+modules = parse_spice_file("sky130_fd_sc_ls.spice", "Low Speed")
+write_parser_file(modules, "fd_sc_ls.py")
diff --git a/scripts/install-dev.sh b/scripts/install-dev.sh
index aa7ef80..a9739b5 100755
--- a/scripts/install-dev.sh
+++ b/scripts/install-dev.sh
@@ -7,9 +7,9 @@ pwd
 cd .. 
 git clone https://github.com/Vlsir/Vlsir.git
 cd Vlsir/bindings/python 
-pip install -e .
+pip install -e ".[dev]"
 cd ../../VlsirTools
-pip install -e .
+pip install -e ".[dev]"
 cd ../../Hdl21
 pip install -e ".[dev]"
-pre-commit install
+# pre-commit install
diff --git a/scripts/install-pypi.sh b/scripts/install-pypi.sh
index 912c65d..9927a39 100755
--- a/scripts/install-pypi.sh
+++ b/scripts/install-pypi.sh
@@ -5,4 +5,4 @@
 #
 
 pip install --pre --editable ".[dev]"
-pre-commit install
+# pre-commit install


Test patch:
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index 2e5e209..a6f4e1b 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -12,6 +12,7 @@ on:
 jobs:
   test:
     runs-on: ubuntu-latest
+    container: tpluck95/vlsir-test-container
 
     # Notes on this matrix, particularly the dependencies part:
     # This sets up testing with dependencies from both (a) PyPi and (b) "dev" versions from GitHub.
@@ -27,25 +28,24 @@ jobs:
     continue-on-error: ${{ matrix.dep-installer == 'pypi' }}
 
     steps:
-      - uses: actions/checkout@v2
+      - name: Checkout Repo
+        uses: actions/checkout@v3
 
       - name: Set up Python ${{ matrix.python-version }}
-        uses: actions/setup-python@v2
-        with:
-          python-version: ${{ matrix.python-version }}
-
-      - name: Install dependencies
-        run: bash scripts/install-${{ matrix.dep-installer }}.sh
-
-      - name: Test with pytest
         run: |
-          pytest -sv --cov=./ --cov-report=xml
+          apt-get install -y python${{ matrix.python-version }}
+          apt-get install -y python${{ matrix.python-version }}-dev
+          apt-get install -y python${{ matrix.python-version }}-venv
+          apt-get install -y python${{ matrix.python-version }}-distutils
+          python${{ matrix.python-version }} -m pip install pytest
+          python${{ matrix.python-version }} -m pip install -Iv black==22.6
 
-      - name: Black Formatting Check
-        uses: psf/black@stable
-        with:
-          version: "22.6"
-          options: "--check --diff --verbose --exclude pdks/PdkTemplate"
+      - name: pytest `HDL21`
+        run: |
+          python${{ matrix.python-version }} -m venv ./venv
+          . ./venv/bin/activate
+          bash scripts/install-${{ matrix.dep-installer }}.sh
+          python${{ matrix.python-version }} -m pytest -sv --cov=./ --cov-report=xml
 
       - name: Upload coverage to Codecov # Adapted from https://github.com/codecov/codecov-action#usage
         uses: codecov/codecov-action@v3
@@ -56,3 +56,19 @@ jobs:
           fail_ci_if_error: true
           path_to_write_report: ./coverage/codecov_report.txt
           verbose: true
+
+  # Seperate job for black, to remove all of the venv noise that we've created above
+  black:
+
+    runs-on: ubuntu-latest
+
+    steps:
+
+      - name: Checkout Repo
+        uses: actions/checkout@v3
+
+      - name: Black Formatting Check
+        uses: psf/black@stable
+        with:
+          version: "22.6"
+          options: "--check --diff --verbose --exclude pdks/PdkTemplate"
\ No newline at end of file
diff --git a/pdks/Sky130/sky130/test_netlists.py b/pdks/Sky130/sky130/test_netlists.py
new file mode 100644
index 0000000..e2f7f95
--- /dev/null
+++ b/pdks/Sky130/sky130/test_netlists.py
@@ -0,0 +1,280 @@
+"""
+This series of tests is made by painstaklingly checking each generated
+SPICE file against the correct NgSpice netlist generated by Xschem
+to ensure that the generated files have the following properties:
+
+1) Ports are being mapped correctly from physical meaning to SPICE param
+2) Primitives and params are passing the correct params to the SPICE file
+3) SPICE files aren't breaking design constraints (eg. some resistors have
+   no explicit width)
+"""
+
+from io import StringIO
+
+import hdl21 as h
+from hdl21.prefix import µ
+import sky130  # No weird or illegal parameters...
+
+
+def test_xtor_netlists():
+    """
+    Explicitly check xtor netlists to see that nothing
+    illegal is being generated and that models are compliant
+    with pre-defined PDK behaviour
+    """
+
+    @h.generator
+    def GenXtor(params: h.MosParams) -> h.Module:
+        @h.module
+        class SingleXtor:
+
+            a, b, c, d = 4 * h.Signal()
+            xtor = h.Mos(params)(d=a, g=b, s=c, b=d)
+
+        return SingleXtor
+
+    for x in sky130.xtors.keys():
+
+        # Relevant params
+        p = h.MosParams(model=x[0], tp=x[1], vth=x[2], w=30 * µ, l=30 * µ)
+
+        # Generate & Compile
+        mod = h.elaborate(GenXtor(p))
+        sky130.compile(mod)
+
+        # Netlist and compare
+        s = StringIO()
+
+        # Ignore the iso model, its not used in the test
+        if sky130.xtors[x].name != "sky130_fd_pr__nfet_20v0_iso":
+
+            h.netlist(mod, dest=s, fmt="spice")
+            s = s.getvalue()
+
+            assert not s.isspace()  # Not empty
+
+
+def test_2_term_res_netlists():
+    """
+    Explicitly check generic resistor netlists to see that nothing
+    illegal is being generated and that models are compliant
+    with pre-defined PDK behaviour
+    """
+
+    @h.generator
+    def GenRes(params: h.PhysicalResistorParams) -> h.Module:
+        @h.module
+        class SingleRes:
+
+            a, b = 2 * h.Signal()
+            genres = h.PhysicalResistor(params)(p=a, n=b)
+
+        return SingleRes
+
+    for x in sky130.ress.keys():
+
+        # This is a hackish way to isolate the two terminal resistors
+        if len(sky130.ress[x].port_list) == 2:
+
+            # Relevant params
+            p = h.PhysicalResistorParams(model=x, w=10 * µ, l=10 * µ)
+
+            # Generate & Compile
+            mod = h.elaborate(GenRes(p))
+            sky130.compile(mod)
+
+            # Netlist and compare
+            s = StringIO()
+            h.netlist(mod, dest=s, fmt="spice")
+            s = s.getvalue()
+
+            assert not s.isspace()  # Not empty
+
+
+def test_3_term_res_netlists():
+    """
+    Explicitly check precision resistor netlists to see that nothing
+    illegal is being generated and that models are compliant
+    with pre-defined PDK behaviour
+    """
+
+    @h.generator
+    def GenRes(params: h.PhysicalResistorParams) -> h.Module:
+        @h.module
+        class SingleRes:
+
+            x, y, z = 3 * h.Signal()
+            genres = h.ThreeTerminalResistor(params)(p=x, n=y, b=z)
+
+        return SingleRes
+
+    for x in sky130.ress.keys():
+
+        if len(sky130.ress[x].port_list) == 3:
+
+            # Relevant params
+            p = h.PhysicalResistorParams(model=x, w=10 * µ, l=10 * µ)
+
+            # Generate & Compile
+            mod = h.elaborate(GenRes(p))
+            sky130.compile(mod)
+
+            # Netlist and compare
+            s = StringIO()
+            h.netlist(mod, dest=s, fmt="spice")
+            s = s.getvalue()
+
+            assert not s.isspace()  # Not empty
+
+
+def test_diode_netlists():
+
+    """
+    Explicitly check diode netlists to see that nothing
+    illegal is being generated and that models are compliant
+    with pre-defined PDK behaviour
+    """
+
+    @h.generator
+    def GenDiode(params: h.DiodeParams) -> h.Module:
+        @h.module
+        class SingleDiode:
+
+            x, y = 2 * h.Signal()
+            gendiode = h.Diode(params)(p=x, n=y)
+
+        return SingleDiode
+
+    for x in sky130.diodes.keys():
+
+        # Relevant param
+        p = h.DiodeParams(model=x, w=3, l=3)
+
+        # Generate and compile
+        mod = h.elaborate(GenDiode(p))
+        sky130.compile(mod)
+
+        # Netlist and compare
+        s = StringIO()
+        h.netlist(mod, dest=s, fmt="spice")
+        s = s.getvalue()
+
+        assert not s.isspace()  # Not empty
+
+
+def test_pnp_netlists():
+    @h.generator
+    def GenBipolar(params: h.BipolarParams) -> h.Module:
+        @h.module
+        class SingleBipolar:
+
+            x, y, z = 3 * h.Signal()
+            genBipolar = h.Bipolar(params)(c=x, b=y, e=z)
+
+        return SingleBipolar
+
+    for x in sky130.bjts.keys():
+
+        if x.startswith("PNP"):
+            # Relevant param
+            p = h.BipolarParams(model=x)
+
+            # Generate and compile
+            mod = h.elaborate(GenBipolar(p))
+            sky130.compile(mod)
+
+            # Netlist and compare
+            s = StringIO()
+            h.netlist(mod, dest=s, fmt="spice")
+            s = s.getvalue()
+
+            assert not s.isspace()  # Not empty
+
+
+def test_npn_netlists():
+
+    p = sky130.Sky130BipolarParams()
+
+    @h.module
+    class Bipolar1:
+
+        w, x, y, z = 4 * h.Signal()
+        genBipolar = sky130.modules.NPN_5p0V_1x2(p)(c=w, b=x, e=y, s=z)
+
+    @h.module
+    class Bipolar2:
+
+        w, x, y, z = 4 * h.Signal()
+        genBipolar = sky130.modules.NPN_5p0V_1x1(p)(c=w, b=x, e=y, s=z)
+
+    s = StringIO()
+    h.netlist(Bipolar1, dest=s, fmt="spice")
+    s = s.getvalue()
+
+    assert not s.isspace()  # Not empty
+
+    s = StringIO()
+    h.netlist(Bipolar2, dest=s, fmt="spice")
+    s = s.getvalue()
+
+    assert not s.isspace()  # Not empty
+
+
+def test_mim_cap_netlists():
+    @h.generator
+    def GenMimCap(params: h.PhysicalCapacitorParams) -> h.Module:
+        @h.module
+        class SingleCap:
+
+            x, y = 2 * h.Signal()
+            genCap = h.PhysicalCapacitor(params)(p=x, n=y)
+
+        return SingleCap
+
+    for x in sky130.caps.keys():
+
+        if x.startswith("MIM"):
+
+            # Relevant params
+            p = h.PhysicalCapacitorParams(model=x, w=3 * µ, l=3 * µ)
+
+            # Generate and compile
+            mod = h.elaborate(GenMimCap(p))
+            sky130.compile(mod)
+
+            # Netlist and compare
+            s = StringIO()
+            h.netlist(mod, dest=s, fmt="spice")
+            s = s.getvalue()
+
+            assert not s.isspace()  # Not empty
+
+
+def test_var_cap_netlists():
+    @h.generator
+    def GenMimCap(params: h.PhysicalCapacitorParams) -> h.Module:
+        @h.module
+        class SingleCap:
+
+            x, y, z = 3 * h.Signal()
+            genCap = h.ThreeTerminalCapacitor(params)(p=x, n=y, b=z)
+
+        return SingleCap
+
+    for x in sky130.caps.keys():
+
+        if x.startswith("VAR"):
+
+            # Relevant params
+            p = h.PhysicalCapacitorParams(model=x, w=3 * µ, l=3 * µ)
+
+            # Generate and compile
+            mod = h.elaborate(GenMimCap(p))
+            sky130.compile(mod)
+
+            # Netlist and compare
+            s = StringIO()
+            h.netlist(mod, dest=s, fmt="spice")
+            s = s.getvalue()
+
+            assert not s.isspace()  # Not empty
diff --git a/pdks/Sky130/sky130/test_pdk.py b/pdks/Sky130/sky130/test_pdk.py
index 5ecfca5..9e785a2 100644
--- a/pdks/Sky130/sky130/test_pdk.py
+++ b/pdks/Sky130/sky130/test_pdk.py
@@ -6,8 +6,10 @@
 
 from io import StringIO
 import hdl21 as h
-from . import pdk as sky130
-from .pdk import modules as s
+from . import pdk_logic as sky130
+from .pdk_logic import modules as s
+from hdl21.prefix import µ
+from hdl21.primitives import *
 
 
 def test_default():
@@ -15,58 +17,389 @@ def test_default():
     assert h.pdk.default() is sky130
 
 
-def mosmodule():
-    # Create a simple Module with each of the default-param Mos types
-    hasmos = h.Module(name="hasmos")
-    z = hasmos.z = h.Signal()
-    hasmos.n = h.Nmos(h.MosParams())(d=z, g=z, s=z, b=z)
-    hasmos.p = h.Pmos(h.MosParams())(d=z, g=z, s=z, b=z)
+def mos_primitives_module():
 
-    # Checks on the initial Module
-    assert isinstance(hasmos.n, h.Instance)
-    assert isinstance(hasmos.p, h.Instance)
-    assert isinstance(hasmos.n.of, h.PrimitiveCall)
-    assert isinstance(hasmos.p.of, h.PrimitiveCall)
+    p = sky130.Sky130MosParams()
 
-    return hasmos
+    @h.module
+    class Primitives:
+        """Module with all the non-20v FETs supported by the PDK package"""
+
+        z = h.Signal(desc="Sole signal connected to everything")
+
+        # Add all generic transistors
+        nfet_01v8 = h.Mos(tp=MosType.NMOS, vth=MosVth.STD, family=MosFamily.CORE)(
+            d=z, g=z, s=z, b=z
+        )
+        nfet_01v8_lvt = h.Mos(tp=MosType.NMOS, vth=MosVth.LOW, family=MosFamily.CORE)(
+            d=z, g=z, s=z, b=z
+        )
+        pfet_01v8 = h.Mos(tp=MosType.PMOS, vth=MosVth.STD, family=MosFamily.CORE)(
+            d=z, g=z, s=z, b=z
+        )
+        pfet_01v8_hvt = h.Mos(tp=MosType.PMOS, vth=MosVth.HIGH, family=MosFamily.CORE)(
+            d=z, g=z, s=z, b=z
+        )
+        pfet_01v8_lvt = h.Mos(tp=MosType.PMOS, vth=MosVth.LOW, family=MosFamily.CORE)(
+            d=z, g=z, s=z, b=z
+        )
+        pfet_g5v0d10v5 = h.Mos(tp=MosType.PMOS, vth=MosVth.STD, family=MosFamily.IO)(
+            d=z, g=z, s=z, b=z
+        )
+        nfet_g5v0d10v5 = h.Mos(tp=MosType.NMOS, vth=MosVth.STD, family=MosFamily.IO)(
+            d=z, g=z, s=z, b=z
+        )
+        pfet_g5v0d16v0 = h.Mos(tp=MosType.PMOS, vth=MosVth.STD, family=MosFamily.IO)(
+            d=z, g=z, s=z, b=z
+        )
+        nfet_03v3_nvt = h.Mos(
+            tp=MosType.NMOS, vth=MosVth.NATIVE, family=MosFamily.NONE
+        )(d=z, g=z, s=z, b=z)
+        nfet_05v0_nvt = h.Mos(
+            tp=MosType.NMOS, vth=MosVth.NATIVE, family=MosFamily.NONE
+        )(d=z, g=z, s=z, b=z)
+        esd_nfet_01v8 = h.Mos(tp=MosType.NMOS, vth=MosVth.STD, family=MosFamily.CORE)(
+            d=z, g=z, s=z, b=z
+        )
+        esd_nfet_g5v0d10v5 = h.Mos(
+            tp=MosType.NMOS, vth=MosVth.STD, family=MosFamily.IO
+        )(d=z, g=z, s=z, b=z)
+        esd_nfet_g5v0d10v5_nvt = h.Mos(
+            tp=MosType.NMOS, vth=MosVth.NATIVE, family=MosFamily.IO
+        )(d=z, g=z, s=z, b=z)
+        esd_pfet_g5v0d10v5 = h.Mos(
+            tp=MosType.PMOS, vth=MosVth.STD, family=MosFamily.IO
+        )(d=z, g=z, s=z, b=z)
+
+    return Primitives
+
+
+def mos20v_primitives_module():
+    @h.module
+    class Primitives:
+        """Module with all the 20v FETs supported by the PDK package"""
+
+        z = h.Signal(desc="Sole signal connected to everything")
+
+        nfet_20v0 = h.Mos(model="NMOS_20p0V_STD")(d=z, g=z, s=z, b=z)
+        nfet_20v0_zvt = h.Mos(model="NMOS_20p0V_LOW")(d=z, g=z, s=z, b=z)
+        # nfet_20v0_iso = h.Mos(model="NMOS_ISO_20p0V")(d=z, g=z, s=z, b=z) <-- can't be compiled.
+        pfet_20v0 = h.Mos(model="PMOS_20p0V")(d=z, g=z, s=z, b=z)
+        nfet_20v0_nvt = h.Mos(model="NMOS_20p0V_NAT")(d=z, g=z, s=z, b=z)
+
+    return Primitives
+
+
+def genres_primitives_module():
+    @h.module
+    class ResistorPrimitives:
+        """Module with all the generic resistor primitives supported by the PDK package"""
+
+        z = h.Signal(desc="Sole signal connected to everything")
+
+        res_gen_po = h.PhysicalResistor(model="GEN_PO")(p=z, n=z)
+        res_gen_li = h.PhysicalResistor(model="GEN_L1")(p=z, n=z)
+        res_gen_m1 = h.PhysicalResistor(model="GEN_M1")(p=z, n=z)
+        res_gen_m2 = h.PhysicalResistor(model="GEN_M2")(p=z, n=z)
+        res_gen_m3 = h.PhysicalResistor(model="GEN_M3")(p=z, n=z)
+        res_gen_m4 = h.PhysicalResistor(model="GEN_M4")(p=z, n=z)
+        res_gen_m5 = h.PhysicalResistor(model="GEN_M5")(p=z, n=z)
+
+        res_gen_nd = h.ThreeTerminalResistor(model="GEN_ND")(p=z, n=z, b=z)
+        res_gen_pd = h.ThreeTerminalResistor(model="GEN_PD")(p=z, n=z, b=z)
+        res_gen_iso_pw = h.ThreeTerminalResistor(model="GEN_ISO_PW")(p=z, n=z, b=z)
+
+    return ResistorPrimitives
+
+
+def precres_primitives_module():
+    @h.module
+    class ResistorPrimitives:
+        """Module with all the precision resistor primitives supported by the PDK package"""
+
+        z = h.Signal(desc="Sole signal connected to everything")
+
+        res_p_prec_035 = h.ThreeTerminalResistor(model="PP_PREC_0p35")(p=z, n=z, b=z)
+        res_p_prec_069 = h.ThreeTerminalResistor(model="PP_PREC_0p69")(p=z, n=z, b=z)
+        res_p_prec_141 = h.ThreeTerminalResistor(model="PP_PREC_1p41")(p=z, n=z, b=z)
+        res_p_prec_285 = h.ThreeTerminalResistor(model="PP_PREC_2p85")(p=z, n=z, b=z)
+        res_p_prec_573 = h.ThreeTerminalResistor(model="PP_PREC_5p73")(p=z, n=z, b=z)
+
+        res_p_minus_prec_035 = h.ThreeTerminalResistor(model="PM_PREC_0p35")(
+            p=z, n=z, b=z
+        )
+        res_p_minus_prec_069 = h.ThreeTerminalResistor(model="PM_PREC_0p69")(
+            p=z, n=z, b=z
+        )
+        res_p_minus_prec_141 = h.ThreeTerminalResistor(model="PM_PREC_1p41")(
+            p=z, n=z, b=z
+        )
+        res_p_minus_prec_285 = h.ThreeTerminalResistor(model="PM_PREC_2p85")(
+            p=z, n=z, b=z
+        )
+        res_p_minus_prec_573 = h.ThreeTerminalResistor(model="PM_PREC_5p73")(
+            p=z, n=z, b=z
+        )
+
+    return ResistorPrimitives
+
+
+def diode_primitives_module():
+    @h.module
+    class DiodePrimitives:
+        """Module with all the diode primitives supported by the PDK package"""
+
+        z = h.Signal(desc="Sole signal connected to everything")
+
+        pwnd_55v = h.Diode(model="PWND_5p5V")(p=z, n=z)
+        pwnd_110v = h.Diode(model="PWND_11p0V")(p=z, n=z)
+        nat_pwnd_55v = h.Diode(model="PWND_5p5V_NAT")(p=z, n=z)
+        lvt_pwnd_55v = h.Diode(model="PWND_5p5V_LVT")(p=z, n=z)
+        pdnw_55v = h.Diode(model="PDNW_5p5V")(p=z, n=z)
+        pdnw_110v = h.Diode(model="PDNW_11p0V")(p=z, n=z)
+        hvt_pdnw_55v = h.Diode(model="PDNW_5p5V_HVT")(p=z, n=z)
+        lvt_pdnw_55v = h.Diode(model="PDNW_5p5V_LVT")(p=z, n=z)
+        px_rf_psnw = h.Diode(model="PX_RF_PSNW")(p=z, n=z)
+        px_rf_pwdn = h.Diode(model="PX_RF_PWDN")(p=z, n=z)
+        px_pwdn = h.Diode(model="PX_PWDN")(p=z, n=z)
+        px_psdn = h.Diode(model="PX_PSDN")(p=z, n=z)
+        px_psnw = h.Diode(model="PX_PSNW")(p=z, n=z)
+
+    return DiodePrimitives
+
+
+def bjt_primitives_module():
+    @h.module
+    class BjtPrimitives:
+        """Module with all the Bipolar transistor primitives supported by the PDK package"""
+
+        z = h.Signal(desc="Sole signal connected to everything")
+
+        # No compilation support for these yet
+        # npn_5_1x2  = h.Npn(model = "NPN_5p0V_1x2")(e=z, b=z, c=z, s=z)
+        # npn_11_1x1 = h.Npn(model = "NPN_11p0V_1x1")(e=z, b=z, c=z, s=z)
+        # npn_5_1x1  = h.Npn(model = "NPN_5p0V_1x1")(e=z, b=z, c=z, s=z)
+        pnp_5_1x1 = h.Pnp(model="PNP_5p0V_0p68x0p68")(e=z, b=z, c=z)
+        pnp_5_3x3 = h.Pnp(model="PNP_5p0V_3p40x3p40")(e=z, b=z, c=z)
+
+    return BjtPrimitives
+
+
+def mimcap_primitives_module():
+    @h.module
+    class CapacitorPrimitives:
+        """Module with all the generic capacitor primitives supported by the PDK package"""
+
+        z = h.Signal(desc="Sole signal connected to everything")
+
+        MIM_M3 = h.PhysicalCapacitor(model="MIM_M3")(p=z, n=z)
+        MIM_M4 = h.PhysicalCapacitor(model="MIM_M4")(p=z, n=z)
+
+    return CapacitorPrimitives
+
+
+def varcap_primitives_module():
+    @h.module
+    class CapacitorPrimitives:
+
+        z = h.Signal(desc="Sole signal connected to everything")
+
+        VAR_LVT = h.ThreeTerminalCapacitor(model="VAR_LVT")(p=z, n=z, b=z)
+        VAR_HVT = h.ThreeTerminalCapacitor(model="VAR_HVT")(p=z, n=z, b=z)
+
+    return CapacitorPrimitives
+
+
+def _compile_and_test(prims: h.Module, paramtype: h.paramclass):
+
+    # Compile
+    sky130.compile(prims)
+
+    # ... and Test
+    for k in prims.namespace:
+        if k is not "z":
+
+            assert isinstance(prims.namespace[k], h.Instance)
+            assert isinstance(prims.namespace[k].of, h.ExternalModuleCall)
+            assert isinstance(prims.namespace[k].of.params, paramtype)
 
 
 def test_compile():
-    hasmos = mosmodule()
 
-    # Compile it for the PDK
-    sky130.compile(hasmos)
+    _compile_and_test(mos_primitives_module(), sky130.Sky130MosParams)
+    _compile_and_test(mos20v_primitives_module(), sky130.Sky130Mos20VParams)
+    _compile_and_test(genres_primitives_module(), sky130.Sky130GenResParams)
+    _compile_and_test(precres_primitives_module(), sky130.Sky130PrecResParams)
+    _compile_and_test(diode_primitives_module(), sky130.Sky130DiodeParams)
+    _compile_and_test(bjt_primitives_module(), sky130.Sky130BipolarParams)
+    _compile_and_test(mimcap_primitives_module(), sky130.Sky130MimParams)
+    _compile_and_test(varcap_primitives_module(), sky130.Sky130VarParams)
+
+
+def _netlist(prims):
 
-    # And check what came back
-    assert isinstance(hasmos.n, h.Instance)
-    assert isinstance(hasmos.p, h.Instance)
-    assert isinstance(hasmos.n.of, h.ExternalModuleCall)
-    assert isinstance(hasmos.p.of, h.ExternalModuleCall)
-    assert isinstance(hasmos.n.of.params, sky130.Sky130MosParams)
-    assert isinstance(hasmos.p.of.params, sky130.Sky130MosParams)
+    # Netlist it for the PDK
+    sky130.compile(prims)
+    h.netlist(prims, StringIO(), fmt="spice")
+
+    # FIXME: The following netlist formats are not yet supported
+    # h.netlist(prims, StringIO(), fmt="spectre")
+    # h.netlist(prims, StringIO(), fmt="verilog")
 
 
 def test_netlist():
-    hasmos = mosmodule()
 
-    # Netlist it for the PDK
-    sky130.compile(hasmos)
-    h.netlist(hasmos, StringIO(), fmt="spice")
-    h.netlist(hasmos, StringIO(), fmt="spectre")
-    h.netlist(hasmos, StringIO(), fmt="verilog")
+    _netlist(mos_primitives_module())
+    _netlist(mos20v_primitives_module())
+    _netlist(genres_primitives_module())
+    _netlist(precres_primitives_module())
+    _netlist(diode_primitives_module())
+    _netlist(bjt_primitives_module())
+    _netlist(mimcap_primitives_module())
+    _netlist(varcap_primitives_module())
 
 
-def test_module1():
+def test_mos_module():
 
-    mp = sky130.Sky130MosParams()
+    p = sky130.Sky130MosParams()
+    q = sky130.Sky130Mos20VParams()
 
     @h.module
     class HasXtors:
-        # Instantiate each transistor, with the default parameter values
-        ns = s.sky130_fd_pr__nfet_01v8(mp)()
-        nl = s.sky130_fd_pr__nfet_01v8_lvt(mp)()
-        ps = s.sky130_fd_pr__pfet_01v8(mp)()
-        ph = s.sky130_fd_pr__pfet_01v8_hvt(mp)()
+        nfet_01v8 = s.NMOS_1p8V_STD(p)()
+        nfet_01v8_lvt = s.NMOS_1p8V_LOW(p)()
+        pfet_01v8 = s.PMOS_1p8V_STD(p)()
+        pfet_01v8_hvt = s.PMOS_1p8V_HIGH(p)()
+        pfet_01v8_lvt = s.PMOS_1p8V_LOW(p)()
+        pfet_g5v0d10v5 = s.PMOS_5p5V_D10_STD(p)()
+        nfet_g5v0d10v5 = s.NMOS_5p5V_D10_STD(p)()
+        pfet_g5v0d16v0 = s.PMOS_5p5V_D16_STD(p)()
+        nfet_20v0 = s.NMOS_20p0V_STD(q)()
+        nfet_20v0_zvt = s.NMOS_20p0V_LOW(q)()
+        nfet_20v0_iso = s.NMOS_ISO_20p0V(q)()
+        pfet_20v0 = s.PMOS_20p0V(q)()
+        nfet_03v3_nvt = s.NMOS_3p3V_NAT(p)()
+        nfet_05v0_nvt = s.NMOS_5p0V_NAT(p)()
+        nfet_20v0_nvt = s.NMOS_20p0V_NAT(q)()
+        esd_nfet_01v8 = s.ESD_NMOS_1p8V(p)()
+        esd_nfet_g5v0d10v5 = s.ESD_NMOS_5p5V_D10(p)()
+        esd_nfet_g5v0d10v5_nvt = s.ESD_NMOS_5p5V_NAT(p)()
+        esd_pfet_g5v0d10v5 = s.ESD_PMOS_5p5V(p)()
+
+
+def test_genres_module():
+
+    p = sky130.Sky130GenResParams()
+
+    @h.module
+    class HasGenRes:
+        res_gen_po = s.GEN_PO(p)()
+        res_gen_l1 = s.GEN_L1(p)()
+        res_gen_m1 = s.GEN_M1(p)()
+        res_gen_m2 = s.GEN_M2(p)()
+        res_gen_m3 = s.GEN_M3(p)()
+        res_gen_m4 = s.GEN_M4(p)()
+        res_gen_m5 = s.GEN_M5(p)()
+        res_gen_nd = s.GEN_ND(p)()
+        res_gen_pd = s.GEN_PD(p)()
+        res_gen_iso_pw = s.GEN_ISO_PW(p)()
+
+
+def test_precres_module():
+
+    p = sky130.Sky130PrecResParams()
+
+    @h.module
+    class HasPrecRes:
+        res_p_prec_035 = s.PP_PREC_0p35(p)()
+        res_p_prec_069 = s.PP_PREC_0p69(p)()
+        res_p_prec_141 = s.PP_PREC_1p41(p)()
+        res_p_prec_285 = s.PP_PREC_2p85(p)()
+        res_p_prec_573 = s.PP_PREC_5p73(p)()
+        res_p_minus_prec_035 = s.PM_PREC_0p35(p)()
+        res_p_minus_prec_069 = s.PM_PREC_0p69(p)()
+        res_p_minus_prec_141 = s.PM_PREC_1p41(p)()
+        res_p_minus_prec_285 = s.PM_PREC_2p85(p)()
+        res_p_minus_prec_573 = s.PM_PREC_5p73(p)()
+
+
+def test_diode_module():
+
+    p = sky130.Sky130DiodeParams()
+
+    @h.module
+    class HasDiodes:
+        pwnd_55v = s.PWND_5p5V(p)()
+        pwnd_110v = s.PWND_11p0V(p)()
+        nat_pwnd_55v = s.PWND_5p5V_NAT(p)()
+        lvt_pwnd_55v = s.PWND_5p5V_LVT(p)()
+        pdnw_55v = s.PDNW_5p5V(p)()
+        pdnw_110v = s.PDNW_11p0V(p)()
+        hvt_pdnw_55v = s.PDNW_5p5V_HVT(p)()
+        lvt_pdnw_55v = s.PDNW_5p5V_LVT(p)()
+        px_rf_psnw = s.PX_RF_PSNW(p)()
+        px_rf_pwdn = s.PX_RF_PWDN(p)()
+        px_pwdn = s.PX_PWDN(p)()
+        px_psdn = s.PX_PSDN(p)()
+        px_psnw = s.PX_PSNW(p)()
+
+
+def test_bjt_module():
+
+    p = sky130.Sky130BipolarParams()
+
+    @h.module
+    class HasBJTs:
+
+        npn_5_1x2 = s.NPN_5p0V_1x2(p)()
+        npn_11_1x1 = s.NPN_11p0V_1x1(p)()
+        npn_5_1x1 = s.NPN_5p0V_1x1(p)()
+        pnp_5_1x1 = s.PNP_5p0V_0p68x0p68(p)()
+        pnp_5_3x3 = s.PNP_5p0V_3p40x3p40(p)()
+
+
+def test_gencap_module():
+
+    p = sky130.Sky130MimParams()
+    q = sky130.Sky130VarParams()
+
+    @h.module
+    class HasGenCaps:
+
+        MIM_M3 = s.MIM_M3(p)()
+        MIM_M4 = s.MIM_M4(p)()
+        VAR_LVT = s.VAR_LVT(q)()
+        VAR_HVT = s.VAR_HVT(q)()
+
+
+def test_devcap_module():
+
+    p = sky130.Sky130VPPParams()
+
+    @h.module
+    class HasDevCaps:
+
+        cap_vpp_1 = s.VPP_PARA_1(p)()
+        cap_vpp_2 = s.VPP_PARA_2(p)()
+        cap_vpp_3 = s.VPP_PARA_3(p)()
+        cap_vpp_4 = s.VPP_PARA_4(p)()
+        cap_vpp_5 = s.VPP_PARA_5(p)()
+        cap_vpp_6 = s.VPP_PARA_6(p)()
+        cap_vpp_7 = s.VPP_PARA_7(p)()
+        cap_vpp_8 = s.VPP_PARA_8(p)()
+        cap_vpp_9 = s.VPP_PARA_9(p)()
+        cap_vpp_10 = s.VPP_PARA_10(p)()
+        cap_vpp_11 = s.VPP_PARA_11(p)()
+        cap_vpp_12 = s.VPP_PERP_1(p)()
+        cap_vpp_13 = s.VPP_PERP_2(p)()
+        cap_vpp_14 = s.VPP_PERP_3(p)()
+        cap_vpp_15 = s.VPP_PERP_4(p)()
+        cap_vpp_16 = s.VPP_PERP_5(p)()
+        cap_vpp_17 = s.VPP_PERP_6(p)()
+        cap_vpp_18 = s.VPP_PERP_7(p)()
+        cap_vpp_19 = s.VPP_PERP_8(p)()
+        cap_vpp_20 = s.VPP_PERP_9(p)()
+        cap_vpp_21 = s.VPP_PERP_10(p)()
 
 
 def test_walker_contents():
diff --git a/pdks/Sky130/sky130/test_site.py b/pdks/Sky130/sky130/test_site.py
deleted file mode 100644
index a843078..0000000
--- a/pdks/Sky130/sky130/test_site.py
+++ /dev/null
@@ -1,96 +0,0 @@
-"""
-# Test Site
-
-Tests which are only valid with a PDK `install` configured, 
-generally via a `sitepdks` package. 
-"""
-
-import pytest
-
-# Import the site PDKs, or skip all these tests if not available.
-sitepdks = pytest.importorskip("sitepdks")
-if not hasattr(sitepdks, "sky130"):
-    pytest.skip("No sky130 PDK install configured", allow_module_level=True)
-
-# If that succeeded, import the PDK we want to test.
-# It should have a valid `install` attribute.
-import sky130
-import hdl21 as h
-import vlsirtools.spice as vsp
-
-
-def test_installed():
-    assert sky130.install is not None
-    assert isinstance(sky130.install, sky130.Install)
-
-
-def test_sim():
-    """# Test invoking simulation"""
-
-    @h.sim.sim
-    class Sim:
-        """Single transistor simulation"""
-
-        @h.module
-        class Tb:  # Testbench
-            VSS = h.Port()
-            vdd = h.Signal()
-            v = h.Vdc(dc=1)(p=vdd, n=VSS)
-            n = sky130.modules.sky130_fd_pr__nfet_01v8()(d=vdd, g=vdd, s=VSS, b=VSS)
-
-        # Simulation Controls
-        op = h.sim.Op()
-        inc = sky130.install.include(h.pdk.Corner.TYP)
-
-    opts = vsp.SimOptions(
-        simulator=vsp.SupportedSimulators.NGSPICE,
-        fmt=vsp.ResultFormat.SIM_DATA,
-        rundir="./scratch",
-    )
-    rv = Sim.run(opts)
-    assert isinstance(rv, vsp.sim_data.SimResult)
-
-    op = rv[vsp.sim_data.AnalysisType.OP]
-    assert isinstance(op, vsp.sim_data.OpResult)
-    id = abs(op.data["i(v.xtop.vv)"])
-    assert id > 5e-5
-    assert id < 6e-5
-
-
-def test_sim_inv():
-    """# Test invoking simulation on a default inverter"""
-
-    @h.module
-    class Inv:  # Default-sized inverter
-        i, o, VDD, VSS = 4 * h.Port()
-        n = sky130.modules.sky130_fd_pr__nfet_01v8()(d=o, g=i, s=VSS, b=VSS)
-        p = sky130.modules.sky130_fd_pr__pfet_01v8()(d=o, g=i, s=VDD, b=VDD)
-
-    @h.sim.sim
-    class Sim:
-        """# Inverter DC OP Simulation"""
-
-        @h.module
-        class Tb:  # Testbench
-            VSS = h.Port()
-            s, VDD = 2 * h.Signal()
-            vvdd = h.Vdc(dc=1)(p=VDD, n=VSS)
-            inv = Inv(i=s, o=s, VDD=VDD, VSS=VSS)
-
-        # Simulation Controls
-        op = h.sim.Op()
-        inc = h.sim.Lib(path=sky130.install.model_lib, section="tt")
-
-    opts = vsp.SimOptions(
-        simulator=vsp.SupportedSimulators.NGSPICE,
-        fmt=vsp.ResultFormat.SIM_DATA,
-        rundir="./scratch",
-    )
-    rv = Sim.run(opts)
-    assert isinstance(rv, vsp.sim_data.SimResult)
-
-    op = rv[vsp.sim_data.AnalysisType.OP]
-    assert isinstance(op, vsp.sim_data.OpResult)
-    vs = op.data["v(xtop.s)"]
-    assert vs > 0.5
-    assert vs < 0.55
diff --git a/pdks/Sky130/sky130/test_site_sims.py b/pdks/Sky130/sky130/test_site_sims.py
new file mode 100644
index 0000000..0acdf8b
--- /dev/null
+++ b/pdks/Sky130/sky130/test_site_sims.py
@@ -0,0 +1,664 @@
+"""
+# Test Site Simulations
+
+Tests all PDK components with default include statements
+to ensure simulators are functioning as intended.
+"""
+
+import pytest
+
+# Import the site PDKs, or skip all these tests if not available.
+sitepdks = pytest.importorskip("sitepdks")
+
+# If that succeeded, import the PDK we want to test.
+# It should have a valid `install` attribute.
+import sky130
+import hdl21 as h
+import vlsirtools.spice as vsp
+from sky130 import modules as s
+
+
+def test_installed():
+    """
+    Test if the PDK is installed and properly configured.
+
+    This test checks if the PDK `sky130.install` is not None and if its type
+    is `sky130.Install`. If both conditions are met, the test passes.
+    """
+    assert sky130.install is not None
+    assert isinstance(sky130.install, sky130.Install)
+
+
+def test_sim():
+    """
+    Test the DC operating point simulation of a single transistor.
+
+    This test creates a simple testbench with a single NMOS transistor, runs a DC operating point
+    simulation, and checks if the output current falls within a specific range. If the output current
+    is within the specified range, the test passes.
+    """
+
+    @h.sim.sim
+    class Sim:
+        """Single transistor simulation"""
+
+        @h.module
+        class Tb:  # Testbench
+            VSS = h.Port()
+            vdd = h.Signal()
+            v = h.Vdc(dc=1)(p=vdd, n=VSS)
+            n = sky130.modules.NMOS_1p8V_STD()(d=vdd, g=vdd, s=VSS, b=VSS)
+
+        # Simulation Controls
+        op = h.sim.Op()
+        inc = sky130.install.include(h.pdk.Corner.TYP)
+
+    opts = vsp.SimOptions(
+        simulator=vsp.SupportedSimulators.NGSPICE,
+        fmt=vsp.ResultFormat.SIM_DATA,
+        rundir="./scratch",
+    )
+    rv = Sim.run(opts)
+    assert isinstance(rv, vsp.sim_data.SimResult)
+
+    op = rv[vsp.sim_data.AnalysisType.OP]
+    assert isinstance(op, vsp.sim_data.OpResult)
+    id = abs(op.data["i(v.xtop.vv)"])
+    assert id > 5e-5
+    assert id < 6e-5
+
+
+def test_sim_inv():
+    """
+    Test the DC operating point simulation of a default-sized inverter.
+
+    This test creates a testbench with a default-sized inverter, runs a DC operating point
+    simulation, and checks if the output voltage falls within a specific range. If the output voltage
+    is within the specified range, the test passes.
+    """
+
+    @h.module
+    class Inv:  # Default-sized inverter
+        i, o, VDD, VSS = 4 * h.Port()
+        n = sky130.modules.NMOS_1p8V_STD()(d=o, g=i, s=VSS, b=VSS)
+        p = sky130.modules.PMOS_1p8V_STD()(d=o, g=i, s=VDD, b=VDD)
+
+    @h.sim.sim
+    class Sim:
+        """# Inverter DC OP Simulation"""
+
+        @h.module
+        class Tb:  # Testbench
+            VSS = h.Port()
+            s, VDD = 2 * h.Signal()
+            vvdd = h.Vdc(dc=1)(p=VDD, n=VSS)
+            inv = Inv(i=s, o=s, VDD=VDD, VSS=VSS)
+
+        # Simulation Controls
+        op = h.sim.Op()
+        inc = sky130.install.include(h.pdk.Corner.TYP)
+
+    opts = vsp.SimOptions(
+        simulator=vsp.SupportedSimulators.NGSPICE,
+        fmt=vsp.ResultFormat.SIM_DATA,
+        rundir="./scratch",
+    )
+    rv = Sim.run(opts)
+    assert isinstance(rv, vsp.sim_data.SimResult)
+
+    op = rv[vsp.sim_data.AnalysisType.OP]
+    assert isinstance(op, vsp.sim_data.OpResult)
+    vs = op.data["v(xtop.s)"]
+    assert vs > 0.5
+    assert vs < 0.55
+
+
+def test_sim_mosfets():
+    @h.sim.sim
+    class Sim:
+        @h.module
+        class Tb:
+
+            VSS = h.Port()
+            vdd = h.Signal()
+            v = h.Vdc(dc=1)(p=vdd, n=VSS)
+
+            p = sky130.Sky130MosParams
+            q = sky130.Sky130Mos20VParams
+
+            nfet_01v8 = s.NMOS_1p8V_STD(p(w=0.420, l=0.150))(d=vdd, g=vdd, s=VSS, b=VSS)
+            nfet_01v8_lvt = s.NMOS_1p8V_LOW(p(w=0.420, l=0.150))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+            pfet_01v8 = s.PMOS_1p8V_STD(p(w=0.550, l=0.150))(d=vdd, g=vdd, s=VSS, b=VSS)
+            pfet_01v8_hvt = s.PMOS_1p8V_HIGH(p(w=0.550, l=0.150))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+            pfet_01v8_lvt = s.PMOS_1p8V_LOW(p(w=0.550, l=0.350))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+            pfet_g5v0d10v5 = s.PMOS_5p5V_D10_STD(p(w=0.420, l=0.500))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+            nfet_g5v0d10v5 = s.NMOS_5p5V_D10_STD(p(w=0.420, l=0.500))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+            pfet_g5v0d16v0 = s.PMOS_5p5V_D16_STD(p(w=5.000, l=0.660))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+
+            # This weirdo needs 5 terminals
+            nfet_20v0_iso = s.NMOS_ISO_20p0V(q(w=30.000, l=1.500))(
+                d=vdd, g=vdd, s=VSS, b=VSS, sub=VSS
+            )
+
+            # 20V series only accepts W/L/m
+            pfet_20v0 = s.PMOS_20p0V(q(w=30, l=1, m=1))(d=vdd, g=vdd, s=VSS, b=VSS)
+            nfet_20v0_zvt = s.NMOS_20p0V_LOW(q(w=30.000, l=1.500))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+            nfet_20v0 = s.NMOS_20p0V_STD(q(w=29.410, l=2.950))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+            nfet_20v0_nvt = s.NMOS_20p0V_NAT(q(w=30.000, l=1.000))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+
+            nfet_03v3_nvt = s.NMOS_3p3V_NAT(p(w=0.700, l=0.500))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+            nfet_05v0_nvt = s.NMOS_5p0V_NAT(p(w=0.700, l=0.900))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+            esd_nfet_01v8 = s.ESD_NMOS_1p8V(p(w=20.350, l=0.165))(
+                d=vdd, g=vdd, s=VSS, b=VSS
+            )
+
+            # ESD G5V0D10V5's are simply unavailable in the high-level SPICE libraries in the PDK!
+            # esd_nfet_g5v0d10v5_nvt = s.ESD_NMOS_5p5V_NAT(p(w = 10.000, l = 0.900))(d=vdd, g=vdd, s=VSS, b=VSS)
+            # esd_nfet_g5v0d10v5 = s.ESD_NMOS_5p5V_D10(p(w = 14.500, l = 0.550))(d=vdd, g=vdd, s=VSS, b=VSS)
+            # esd_pfet_g5v0d10v5 = s.ESD_PMOS_5p5V(p(w = 14.500, l = 0.550))(d=vdd, g=vdd, s=VSS, b=VSS)
+
+        # Simulation Controls
+        op = h.sim.Op()
+        # wnf = h.sim.Options(wnflag=1)
+        mc_mm_switch = h.sim.Param(0)
+        mc_pr_switch = h.sim.Param(0)
+        i1 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt.spice"
+        )
+        i2 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical.spice"
+        )
+        i3 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical__lin.spice"
+        )
+        i4 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt/specialized_cells.spice"
+        )
+        # inc = sky130.install.include(h.pdk.Corner.TYP)
+
+    opts = vsp.SimOptions(
+        simulator=vsp.SupportedSimulators.NGSPICE,
+        fmt=vsp.ResultFormat.SIM_DATA,
+        rundir="./scratch",
+    )
+
+    rv = Sim.run(opts)
+    assert isinstance(rv, vsp.sim_data.SimResult)
+
+    op = rv[vsp.sim_data.AnalysisType.OP]
+    assert isinstance(op, vsp.sim_data.OpResult)
+
+
+def test_sim_genres():
+    @h.sim.sim
+    class Sim:
+        @h.module
+        class Tb:
+
+            VSS = h.Port()
+            vdd = h.Signal()
+            v = h.Vdc(dc=1)(p=vdd, n=VSS)
+
+            p = sky130.Sky130GenResParams()
+
+            res_gen_po = s.GEN_PO(p)(p=VSS, n=vdd)
+
+            # FIXME: These models will only simulate in ngspice
+            # with a name starting with "R" (why? why not!)
+
+            res_gen_l1 = s.GEN_L1(p)(p=VSS, n=vdd)
+            res_gen_m1 = s.GEN_M1(p)(p=VSS, n=vdd)
+            res_gen_m2 = s.GEN_M2(p)(p=VSS, n=vdd)
+            res_gen_m3 = s.GEN_M3(p)(p=VSS, n=vdd)
+            res_gen_m4 = s.GEN_M4(p)(p=VSS, n=vdd)
+            res_gen_m5 = s.GEN_M5(p)(p=VSS, n=vdd)
+
+            res_gen_nd = s.GEN_ND(p)(p=VSS, n=vdd, b=VSS)
+            res_gen_pd = s.GEN_PD(p)(p=VSS, n=vdd, b=VSS)
+            res_gen_iso_pw = s.GEN_ISO_PW(p)(p=VSS, n=vdd, b=VSS)
+
+        # Simulation Controls
+        op = h.sim.Op()
+        # wnf = h.sim.Options(wnflag=1)
+
+        mc_mm_switch = h.sim.Param(0)
+        mc_pr_switch = h.sim.Param(0)
+
+        i1 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt.spice"
+        )
+        i2 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical.spice"
+        )
+        i3 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical__lin.spice"
+        )
+        i4 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt/specialized_cells.spice"
+        )
+        # inc = sky130.install.include(h.pdk.Corner.TYP)
+
+    opts = vsp.SimOptions(
+        simulator=vsp.SupportedSimulators.NGSPICE,
+        fmt=vsp.ResultFormat.SIM_DATA,
+        rundir="./scratch",
+    )
+
+    rv = Sim.run(opts)
+    assert isinstance(rv, vsp.sim_data.SimResult)
+
+    op = rv[vsp.sim_data.AnalysisType.OP]
+    assert isinstance(op, vsp.sim_data.OpResult)
+
+
+def test_sim_precres():
+    @h.sim.sim
+    class Sim:
+        @h.module
+        class Tb:
+
+            VSS = h.Port()
+            vdd = h.Signal()
+            v = h.Vdc(dc=1)(p=vdd, n=VSS)
+
+            p = sky130.Sky130PrecResParams()
+
+            res_p_prec_035 = s.PP_PREC_0p35(p)(p=VSS, n=vdd, b=VSS)
+            res_p_prec_069 = s.PP_PREC_0p69(p)(p=VSS, n=vdd, b=VSS)
+            res_p_prec_141 = s.PP_PREC_1p41(p)(p=VSS, n=vdd, b=VSS)
+            res_p_prec_285 = s.PP_PREC_2p85(p)(p=VSS, n=vdd, b=VSS)
+            res_p_prec_573 = s.PP_PREC_5p73(p)(p=VSS, n=vdd, b=VSS)
+            res_p_minus_prec_035 = s.PM_PREC_0p35(p)(p=VSS, n=vdd, b=VSS)
+            res_p_minus_prec_069 = s.PM_PREC_0p69(p)(p=VSS, n=vdd, b=VSS)
+            res_p_minus_prec_141 = s.PM_PREC_1p41(p)(p=VSS, n=vdd, b=VSS)
+            res_p_minus_prec_285 = s.PM_PREC_2p85(p)(p=VSS, n=vdd, b=VSS)
+            res_p_minus_prec_573 = s.PM_PREC_5p73(p)(p=VSS, n=vdd, b=VSS)
+
+        # Simulation Controls
+        op = h.sim.Op()
+        # wnf = h.sim.Options(wnflag=1)
+        mc_mm_switch = h.sim.Param(0)
+        mc_pr_switch = h.sim.Param(0)
+        i1 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt.spice"
+        )
+        i2 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical.spice"
+        )
+        i3 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical__lin.spice"
+        )
+        i4 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt/specialized_cells.spice"
+        )
+        # inc = sky130.install.include(h.pdk.Corner.TYP)
+
+    opts = vsp.SimOptions(
+        simulator=vsp.SupportedSimulators.NGSPICE,
+        fmt=vsp.ResultFormat.SIM_DATA,
+        rundir="./scratch",
+    )
+
+    rv = Sim.run(opts)
+    assert isinstance(rv, vsp.sim_data.SimResult)
+
+    op = rv[vsp.sim_data.AnalysisType.OP]
+    assert isinstance(op, vsp.sim_data.OpResult)
+
+
+def test_sim_bjt():
+    @h.sim.sim
+    class Sim:
+        @h.module
+        class Tb:
+
+            VSS = h.Port()
+            vdd = h.Signal()
+            v = h.Vdc(dc=1)(p=vdd, n=VSS)
+
+            p = sky130.Sky130BipolarParams()
+
+            # FIXME: NPN Transistors currently require a hack
+            npn_5_1x2 = s.NPN_5p0V_1x2(p)(c=VSS, b=vdd, e=VSS, s=VSS)
+            # npn_11_1x1 = s.NPN_11p0V_1x1(p)(c=VSS,b=vdd,e=VSS,s=VSS) # This one just won't work...
+            npn_5_1x1 = s.NPN_5p0V_1x1(p)(c=VSS, b=vdd, e=VSS, s=VSS)
+
+            # These function without the hack below
+            pnp_5_1x1 = s.PNP_5p0V_0p68x0p68(p)(c=VSS, b=vdd, e=VSS)
+            pnp_5_3x3 = s.PNP_5p0V_3p40x3p40(p)(c=VSS, b=vdd, e=VSS)
+
+        # Simulation Controls
+        op = h.sim.Op()
+        # wnf = h.sim.Options(wnflag=1)
+
+        # Hack: https://open-source-silicon.slack.com/archives/C016UL7AQ73/p1680254109624109?thread_ts=1680112037.990359&cid=C016UL7AQ73
+        dkisnpn1x1 = h.sim.Param(8.7913e-01)
+        dkbfnpn1x1 = h.sim.Param(9.8501e-01)
+        dkisnpn1x2 = h.sim.Param(9.0950e-01)
+        dkbfnpn1x2 = h.sim.Param(9.6759e-01)
+        dkisnpnpolyhv = h.sim.Param(1.0)
+        dkbfnpnpolyhv = h.sim.Param(1.0)
+
+        mc_mm_switch = h.sim.Param(0)
+        mc_pr_switch = h.sim.Param(0)
+        i1 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt.spice"
+        )
+        i2 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical.spice"
+        )
+        i3 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical__lin.spice"
+        )
+        i4 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt/specialized_cells.spice"
+        )
+
+    opts = vsp.SimOptions(
+        simulator=vsp.SupportedSimulators.NGSPICE,
+        fmt=vsp.ResultFormat.SIM_DATA,
+        rundir="./scratch",
+    )
+
+    rv = Sim.run(opts)
+    assert isinstance(rv, vsp.sim_data.SimResult)
+
+    op = rv[vsp.sim_data.AnalysisType.OP]
+    assert isinstance(op, vsp.sim_data.OpResult)
+
+
+def test_sim_diode():
+    @h.sim.sim
+    class Sim:
+        @h.module
+        class Tb:
+
+            VSS = h.Port()
+            vdd = h.Signal()
+            v = h.Vdc(dc=1)(p=vdd, n=VSS)
+
+            p = sky130.Sky130DiodeParams()
+
+            # FIXME: These are not working
+
+            # All require a name starting with D
+
+            pwnd_55v = s.PWND_5p5V(p)(p=vdd, n=VSS)
+            pwnd_110v = s.PWND_11p0V(p)(p=vdd, n=VSS)
+            nat_pwnd_55v = s.PWND_5p5V_NAT(p)(p=vdd, n=VSS)
+            lvt_pwnd_55v = s.PWND_5p5V_LVT(p)(p=vdd, n=VSS)
+            pdnw_55v = s.PDNW_5p5V(p)(p=vdd, n=VSS)
+            pdnw_110v = s.PDNW_11p0V(p)(p=vdd, n=VSS)
+            hvt_pdnw_55v = s.PDNW_5p5V_HVT(p)(p=vdd, n=VSS)
+            lvt_pdnw_55v = s.PDNW_5p5V_LVT(p)(p=vdd, n=VSS)
+            px_pwdn = s.PX_PWDN(p)(p=vdd, n=VSS)
+            px_psdn = s.PX_PSDN(p)(p=vdd, n=VSS)
+            px_psnw = s.PX_PSNW(p)(p=vdd, n=VSS)
+
+            # RF diodes are just strange
+
+            # px_rf_psnw = s.PX_RF_PSNW(p)(p=vdd, n=VSS)
+            # px_rf_pwdn = s.PX_RF_PWDN(p)(p=vdd, n=VSS)
+
+        # Simulation Controls
+        op = h.sim.Op()
+        # wnf = h.sim.Options(wnflag=1)
+        mc_mm_switch = h.sim.Param(0)
+        mc_pr_switch = h.sim.Param(0)
+        i1 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt.spice"
+        )
+        i2 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical.spice"
+        )
+        i3 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical__lin.spice"
+        )
+        i4 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt/specialized_cells.spice"
+        )
+        i5 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt/rf.spice"
+        )
+        # inc = sky130.install.include(h.pdk.Corner.TYP)
+
+    opts = vsp.SimOptions(
+        simulator=vsp.SupportedSimulators.NGSPICE,
+        fmt=vsp.ResultFormat.SIM_DATA,
+        rundir="./scratch",
+    )
+
+    rv = Sim.run(opts)
+    assert isinstance(rv, vsp.sim_data.SimResult)
+
+    op = rv[vsp.sim_data.AnalysisType.OP]
+    assert isinstance(op, vsp.sim_data.OpResult)
+
+
+def test_sim_gencap():
+    @h.sim.sim
+    class Sim:
+        @h.module
+        class Tb:
+
+            VSS = h.Port()
+            vdd = h.Signal()
+            v = h.Vdc(dc=1)(p=vdd, n=VSS)
+
+            p = sky130.Sky130MimParams()
+            q = sky130.Sky130VarParams()
+
+            MIM_M3 = s.MIM_M3(p)(p=vdd, n=VSS)
+            MIM_M4 = s.MIM_M4(p)(p=vdd, n=VSS)
+            VAR_LVT = s.VAR_LVT(q)(p=vdd, n=VSS, b=VSS)
+            VAR_HVT = s.VAR_HVT(q)(p=vdd, n=VSS, b=VSS)
+
+        # Simulation Controls
+        op = h.sim.Op()
+        # wnf = h.sim.Options(wnflag=1)
+        mc_mm_switch = h.sim.Param(0)
+        mc_pr_switch = h.sim.Param(0)
+        i1 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt.spice"
+        )
+        i2 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical.spice"
+        )
+        i3 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical__lin.spice"
+        )
+        i4 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt/specialized_cells.spice"
+        )
+        # inc = sky130.install.include(h.pdk.Corner.TYP)
+
+    opts = vsp.SimOptions(
+        simulator=vsp.SupportedSimulators.NGSPICE,
+        fmt=vsp.ResultFormat.SIM_DATA,
+        rundir="./scratch",
+    )
+
+    rv = Sim.run(opts)
+    assert isinstance(rv, vsp.sim_data.SimResult)
+
+    op = rv[vsp.sim_data.AnalysisType.OP]
+    assert isinstance(op, vsp.sim_data.OpResult)
+
+
+def test_sim_devcap():
+    @h.sim.sim
+    class Sim:
+        @h.module
+        class Tb:
+
+            VSS = h.Port()
+            vdd = h.Signal()
+            v = h.Vdc(dc=1)(p=vdd, n=VSS)
+
+            p = sky130.Sky130VPPParams()
+
+            # These work but you must include parameters from the
+            # the first 5 which parameterize all the others
+
+            cap_vpp_1 = s.VPP_PARA_1(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_2 = s.VPP_PARA_2(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_3 = s.VPP_PARA_3(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_4 = s.VPP_PARA_4(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_5 = s.VPP_PARA_5(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_6 = s.VPP_PARA_6(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_7 = s.VPP_PARA_7(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_8 = s.VPP_PARA_8(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_9 = s.VPP_PARA_9(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_10 = s.VPP_PARA_10(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_11 = s.VPP_PARA_11(p)(p=vdd, n=VSS, b=VSS)
+            cap_vpp_12 = s.VPP_PERP_1(p)(p=vdd, n=VSS, b=VSS, t=VSS)
+            cap_vpp_13 = s.VPP_PERP_2(p)(p=vdd, n=VSS, b=VSS, t=VSS)
+            cap_vpp_14 = s.VPP_PERP_3(p)(p=vdd, n=VSS, b=VSS, t=VSS)
+            cap_vpp_15 = s.VPP_PERP_4(p)(p=vdd, n=VSS, b=VSS, t=VSS)
+            cap_vpp_16 = s.VPP_PERP_5(p)(p=vdd, n=VSS, b=VSS, t=VSS)
+            cap_vpp_17 = s.VPP_PERP_6(p)(p=vdd, n=VSS, b=VSS, t=VSS)
+            cap_vpp_18 = s.VPP_PERP_7(p)(p=vdd, n=VSS, b=VSS, t=VSS)
+            cap_vpp_19 = s.VPP_PERP_8(p)(p=vdd, n=VSS, b=VSS, t=VSS)
+            cap_vpp_20 = s.VPP_PERP_9(p)(p=vdd, n=VSS, b=VSS, t=VSS)
+            # cap_vpp_21 = s.VPP_PERP_10(p)(p=vdd, n=VSS, b=VSS, t=VSS)
+
+        # Simulation Controls
+        op = h.sim.Op()
+        # wnf = h.sim.Options(wnflag=1)
+        mc_mm_switch = h.sim.Param(0)
+        mc_pr_switch = h.sim.Param(0)
+        j1 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.model_ref
+            / "sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield_o2.spice"
+        )
+
+        j2 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.model_ref
+            / "sky130_fd_pr__cap_vpp_02p4x04p6_m1m2_noshield.spice"
+        )
+
+        j3 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.model_ref
+            / "sky130_fd_pr__cap_vpp_08p6x07p8_m1m2_noshield.spice"
+        )
+
+        j4 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.model_ref
+            / "sky130_fd_pr__cap_vpp_04p4x04p6_m1m2_noshield.spice"
+        )
+
+        j5 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.model_ref
+            / "sky130_fd_pr__cap_vpp_11p5x11p7_m1m2_noshield.spice"
+        )
+
+        i1 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt.spice"
+        )
+        i2 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical.spice"
+        )
+        i3 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "r+c/res_typical__cap_typical__lin.spice"
+        )
+        i4 = h.sim.Include(
+            sky130.install.pdk_path
+            / sky130.install.lib_path.parent
+            / "corners/tt/specialized_cells.spice"
+        )
+        # inc = sky130.install.include(h.pdk.Corner.TYP)
+
+    opts = vsp.SimOptions(
+        simulator=vsp.SupportedSimulators.NGSPICE,
+        fmt=vsp.ResultFormat.SIM_DATA,
+        rundir="./scratch",
+    )
+
+    rv = Sim.run(opts)
+    assert isinstance(rv, vsp.sim_data.SimResult)
+
+    op = rv[vsp.sim_data.AnalysisType.OP]
+    assert isinstance(op, vsp.sim_data.OpResult)