From 5a94d3e2a07fc24bc234cf379aa003c155c698a2 Mon Sep 17 00:00:00 2001 From: daquintero Date: Thu, 23 May 2024 16:31:08 +0200 Subject: [PATCH 1/3] add raw hdl21 pdk structure --- sky130/hdl21/readme.md | 295 ++ sky130/hdl21/scripts/export.py | 106 + sky130/hdl21/scripts/parse_digital_cells.py | 37 + sky130/hdl21/sky130_gf/__init__.py | 13 + .../hdl21/sky130_gf/digital_cells/__init__.py | 0 .../sky130_gf/digital_cells/high_density.py | 2171 ++++++++++ .../sky130_gf/digital_cells/high_speed.py | 1918 +++++++++ .../sky130_gf/digital_cells/low_leakage.py | 1661 ++++++++ .../sky130_gf/digital_cells/low_power.py | 3636 +++++++++++++++++ .../sky130_gf/digital_cells/low_speed.py | 1939 +++++++++ .../sky130_gf/digital_cells/medium_speed.py | 1937 +++++++++ sky130/hdl21/sky130_gf/pdk_data.py | 464 +++ sky130/hdl21/sky130_gf/pdk_logic.py | 401 ++ sky130/hdl21/sky130_gf/primitives/__init__.py | 1 + .../hdl21/sky130_gf/primitives/prim_dicts.py | 443 ++ .../hdl21/sky130_gf/primitives/primitives.py | 187 + sky130/hdl21/sky130_gf/test_netlists.py | 259 ++ sky130/hdl21/sky130_gf/test_pdk.py | 393 ++ sky130/hdl21/sky130_gf/test_site_sims.py | 657 +++ 19 files changed, 16518 insertions(+) create mode 100644 sky130/hdl21/readme.md create mode 100755 sky130/hdl21/scripts/export.py create mode 100644 sky130/hdl21/scripts/parse_digital_cells.py create mode 100644 sky130/hdl21/sky130_gf/__init__.py create mode 100644 sky130/hdl21/sky130_gf/digital_cells/__init__.py create mode 100644 sky130/hdl21/sky130_gf/digital_cells/high_density.py create mode 100644 sky130/hdl21/sky130_gf/digital_cells/high_speed.py create mode 100644 sky130/hdl21/sky130_gf/digital_cells/low_leakage.py create mode 100644 sky130/hdl21/sky130_gf/digital_cells/low_power.py create mode 100644 sky130/hdl21/sky130_gf/digital_cells/low_speed.py create mode 100644 sky130/hdl21/sky130_gf/digital_cells/medium_speed.py create mode 100644 sky130/hdl21/sky130_gf/pdk_data.py create mode 100644 sky130/hdl21/sky130_gf/pdk_logic.py create mode 100644 sky130/hdl21/sky130_gf/primitives/__init__.py create mode 100644 sky130/hdl21/sky130_gf/primitives/prim_dicts.py create mode 100644 sky130/hdl21/sky130_gf/primitives/primitives.py create mode 100644 sky130/hdl21/sky130_gf/test_netlists.py create mode 100644 sky130/hdl21/sky130_gf/test_pdk.py create mode 100644 sky130/hdl21/sky130_gf/test_site_sims.py diff --git a/sky130/hdl21/readme.md b/sky130/hdl21/readme.md new file mode 100644 index 000000000..24ebca88a --- /dev/null +++ b/sky130/hdl21/readme.md @@ -0,0 +1,295 @@ + +## About this PDK Package + +`sky130_hdl21` 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. + + +## Installation + +Install from PyPi via: + +``` +pip install sky130-hdl21 +``` + +And then import the package as `sky130_hdl21`: + +```python +import sky130_hdl21 +assert sky130_hdl21.primitives 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. + +A helpful resource for installing the non-Python portions of the 130nm PDK: +https://anaconda.org/litex-hub/open_pdks.sky130a + +Installable with `conda` via: + +``` +conda install -y -c litex-hub open_pdks.sky130a +``` + +Using the conda-based installation, a typical [sitepdks](https://github.com/dan-fritchman/Hdl21#pdk-installations-and-sites) module might look like: + +```python +CONDA_PREFIX = os.environ.get("CONDA_PREFIX") +model_lib = Path(CONDA_PREFIX) / "share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice" + +import sky130_hdl21 +sky130_hdl21.install = sky130_hdl21.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. + +1. [MOSFETs](#mosfets) +2. [Generic Resistors](#generic-resistors) +3. [Precision Resistors](#precision-resistors) +4. [Diodes](#diodes) +5. [Bipolar Junction Transistors](#bipolar-junction-transistors) +6. [Capacitors](#capacitors) +7. [Digital Cells](#digital-cells) + +### 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 + +MOSFETs in Hdl21 are designed to be PDK-agnostic, making it possible select the desired MOS using either model compilation: +```python +import sky130_hdl21 +from hdl21.primitives import Mos, MosType, MosFamily, MosVth + +a = Mos(vth=MosVth.STD,tp=MosType.NMOS,family=MosFamily.CORE) +sky130_hdl21.compile(a) # a is now an instance of sky130.primitives.NMOS_1p8V_STD +``` +Or can be referenced directly using the component name listed below from the `primitives` submodule. + +NOTE: If any dimensions are not supplied to the params object, the PDK module will assume the minimal viable dimension of the component that you choose. +```python +from hdl21.prefix import µ +from sky130_hdl21_hdl21 import sky130MosParams as p +import sky130_hdl21.primitives as s + +a = s.NMOS_1p8V_STD(p(w=0.2*µ,nf=1)) +``` + +| 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 are resistors composed of materials used in the Sky130 process and can be defined using either width (W), length (L), 3-terminal resistors are formed of substrates and have an additional substrate terminal. + +Generic resistors are not offered with PDK-agnostic compilation and so must be referred to directly with the correct paramtype: +```python +from hdl21.prefix import µ +from sky130_hdl21_hdl21 import Sky130GenResParams as p +from sky130_hdl21_hdl21.primitives import GEN_PO + +a = GEN_PO(p(l=0.3 * µ, w=0.18 * µ)) +``` + +| 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 are made of polysilicon and 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). + +**NOTE: UNITS ARE ASSUMED TO BE IN MICRONS FOR PRECISION RESISTORS** + +```python +from hdl21.prefix import µ +from sky130_hdl21 import Sky130PrecResParams as p +from sky130_hdl21.primitives import GEN_PO + +# NOTE: We assume the units are in microns here +a = GEN_PO(p(L=0.3)) +``` + +| 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). + +**NOTE: DUE TO ANOTHER INTERESTING SCALING QUIRK, MEASUREMENTS FOR DIODES ARE MULTIPLIED BY 1e12 IN SKY130** + +```python +from hdl21.prefix import MEGA, TERA +from sky130_hdl21 import Sky130DiodeParams as par +from sky130_hdl21.primitives import PWND_5p5V + +a = PWND_5p5V(par(area=0.3 * TERA, pj=1.2 * MEGA)) +``` + +| 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: + +```python +from sky130_hdl21 import Sky130BipolarParams as par +from sky130_hdl21.primitives import NPN_5p0V_1x2 + +a = NPN_5p0V_1x2(par(m=2)) +``` + +| 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: + +MiM caps: +```python +from hdl21.prefix import µ +from sky130_hdl21 import Sky130MimCapParams as par +from sky130_hdl21.primitives import MIM_M3 + +a = MIM_M3(w=2 * µ, l=2 * µ) +``` + +Varicaps: +```python +from hdl21.prefix import µ +from sky130_hdl21 import Sky130VarCapParams as par +from sky130_hdl21.primitives import VAR_LVT + +a = VAR_LVT(w=2 * µ, l=2 * µ) +``` + +Vertical-Perpendicular/Parallel Plates: +```python +from sky130_hdl21 import Sky130VPPParams as par +from sky130_hdl21.primitives import VPP_PARA_5 + +a = VPP_PARA_5(m=1) +``` + +| 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 | + +### Digital Cells + +The full range of SKY130's Standard Cell Libraries also work with the Sky130 PDK, they are far too numerous to name here but excellent documentation is available at: https://diychip.org/sky130/ . We allow users to select from each of the libraries using the following import statements: + +| Library Name | Import Statement | +|--------------|------------------| +| sky130_fd_sc_hd | `import sky130.digital_cells.high_density as hd` | +| sky130_fd_sc_hdll | `import sky130.digital_cells.low_leakage as hdll` | +| sky130_fd_sc_hs | `import sky130.digital_cells.high_speed as hs` | +| sky130_fd_sc_hvl | `import sky130.digital_cells.high_voltage as hvl` | +| sky130_fd_sc_lp | `import sky130.digital_cells.low_power as lp` | +| sky130_fd_sc_ls | `import sky130.digital_cells.low_speed as ls` | +| sky130_fd_sc_ms | `import sky130.digital_cells.medium_speed as ms` | + +If you like to load all the digital simultaneously, you can also import the entire digital library by calling `from sky130_hdl21.digital_cells import *`, although - this can take a while. + +Each component is reflects the naming in DIYChip's documentation as well as their ports, for example: + +```python +import sky130_hdl21.digital_cells.high_density as hd +from sky130_hdl21 import Sky130LogicParams as param +p = param() +simple_or = hd.or2_0(p) +``` + +## Development + +``` +pip install -e ".[dev]" +``` diff --git a/sky130/hdl21/scripts/export.py b/sky130/hdl21/scripts/export.py new file mode 100755 index 000000000..ca81009b4 --- /dev/null +++ b/sky130/hdl21/scripts/export.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 +# +# Exports PDK data in Vlsir schema format (protobufs). + +# To run this without installation (maybe during development), you need to +# specify paths to VlsirTools, the Vlsir proto bindings, Hdl21 and the Sky130 +# PDK package (this one): +# PYTHONPATH=/path/Hdl21/pdks/Sky130:/path/Hdl21:/path/Vlsir/VlsirTools/:/path/Vlsir/bindings/python/ \ +# ./export.py --text_format + + +import optparse + +import google.protobuf.text_format as text_format +import hdl21 as h +import vlsir.circuit_pb2 as vlsir_circuit +from sky130_hdl21 import pdk_data +from sky130_hdl21.primitives import prim_dicts +from tabulate import tabulate + + +def define_options(optparser: optparse.OptionParser): + optparser.add_option( + "-o", + "--output", + dest="output", + default="sky130.primitives.pb", + help="name of proto file to export to", + ) + optparser.add_option( + "-t", + "--text_format", + dest="text_format", + action="store_true", + default=False, + help="also export text format version of protobuf", + ) + + +def collect_other_primitives( + defs: dict[str, h.ExternalModule], modules: [h.ExternalModule] +): + table_rows = [] + for name, module in prim_dicts.ress.items(): + table_rows.append([name, module.name]) + modules.append(module) + print(tabulate(table_rows)) + + +def process(options: optparse.Values): + # The primitives are conveniently listed in sky130_hdl21.prim_dicts. You + # could also scrape sky130_hdl21.primitives.__dict__, but don't. + ext_modules: [h.ExternalModule] = [] + + print("Transistors:") + table_rows = [] + for mos_key, module in prim_dicts.xtors.items(): + name, mos_type, mos_vth, mos_family = mos_key + table_rows.append([name, module.name, mos_type, mos_vth, mos_family]) + ext_modules.append(module) + print(tabulate(table_rows)) + + others = { + "Resistors": prim_dicts.ress, + "Diodes": prim_dicts.diodes, + "BJTs": prim_dicts.bjts, + "VPPs": prim_dicts.vpps, + } + + for name, defs in others.items(): + print(f"{name}:") + collect_other_primitives(defs, ext_modules) + + package_pb = vlsir_circuit.Package() + package_pb.domain = pdk_data.PDK_NAME + + for module in ext_modules: + module_pb = h.proto.exporting.export_external_module(module) + for name, param in module.paramtype.__params__.items(): + param_pb = module_pb.parameters.add() + param_pb.name = name + param_pb.value.CopyFrom(h.proto.exporting.export_param_value(param.default)) + param_pb.desc = param.desc + + package_pb.ext_modules.append(module_pb) + + print(f"\nwriting {options.output}") + with open(f"{options.output}", "wb") as f: + f.write(package_pb.SerializeToString()) + + if options.text_format: + filename = f"{options.output}.txt" + print(f"writing {filename}") + with open(filename, "w") as f: + f.write(text_format.MessageToString(package_pb)) + + +def main(): + optparser = optparse.OptionParser() + define_options(optparser) + options, _ = optparser.parse_args() + process(options) + + +if __name__ == "__main__": + main() diff --git a/sky130/hdl21/scripts/parse_digital_cells.py b/sky130/hdl21/scripts/parse_digital_cells.py new file mode 100644 index 000000000..faecaaacb --- /dev/null +++ b/sky130/hdl21/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) 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/sky130/hdl21/sky130_gf/__init__.py b/sky130/hdl21/sky130_gf/__init__.py new file mode 100644 index 000000000..d1f768287 --- /dev/null +++ b/sky130/hdl21/sky130_gf/__init__.py @@ -0,0 +1,13 @@ + +from hdl21.pdk import register + +# Grab our primary PDK-definition module +from . import pdk_logic +from .pdk_logic import * + +# The optional external-data installation. +# Set by an instantiator of `Install`, if available. +install: Install | None = None + +# And register as a PDK module +register(pdk_logic) diff --git a/sky130/hdl21/sky130_gf/digital_cells/__init__.py b/sky130/hdl21/sky130_gf/digital_cells/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/sky130/hdl21/sky130_gf/digital_cells/high_density.py b/sky130/hdl21/sky130_gf/digital_cells/high_density.py new file mode 100644 index 000000000..978954963 --- /dev/null +++ b/sky130/hdl21/sky130_gf/digital_cells/high_density.py @@ -0,0 +1,2171 @@ +from ..pdk_data import logic_module + +a2bb2o_1 = logic_module( + "sky130_fd_sc_hd__a2bb2o_1", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_2 = logic_module( + "sky130_fd_sc_hd__a2bb2o_2", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_4 = logic_module( + "sky130_fd_sc_hd__a2bb2o_4", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2oi_1 = logic_module( + "sky130_fd_sc_hd__a2bb2oi_1", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_2 = logic_module( + "sky130_fd_sc_hd__a2bb2oi_2", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_4 = logic_module( + "sky130_fd_sc_hd__a2bb2oi_4", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21bo_1 = logic_module( + "sky130_fd_sc_hd__a21bo_1", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_2 = logic_module( + "sky130_fd_sc_hd__a21bo_2", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_4 = logic_module( + "sky130_fd_sc_hd__a21bo_4", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21boi_0 = logic_module( + "sky130_fd_sc_hd__a21boi_0", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_1 = logic_module( + "sky130_fd_sc_hd__a21boi_1", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_2 = logic_module( + "sky130_fd_sc_hd__a21boi_2", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_4 = logic_module( + "sky130_fd_sc_hd__a21boi_4", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21o_1 = logic_module( + "sky130_fd_sc_hd__a21o_1", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_2 = logic_module( + "sky130_fd_sc_hd__a21o_2", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_4 = logic_module( + "sky130_fd_sc_hd__a21o_4", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21oi_1 = logic_module( + "sky130_fd_sc_hd__a21oi_1", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_2 = logic_module( + "sky130_fd_sc_hd__a21oi_2", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_4 = logic_module( + "sky130_fd_sc_hd__a21oi_4", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22o_1 = logic_module( + "sky130_fd_sc_hd__a22o_1", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_2 = logic_module( + "sky130_fd_sc_hd__a22o_2", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_4 = logic_module( + "sky130_fd_sc_hd__a22o_4", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22oi_1 = logic_module( + "sky130_fd_sc_hd__a22oi_1", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_2 = logic_module( + "sky130_fd_sc_hd__a22oi_2", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_4 = logic_module( + "sky130_fd_sc_hd__a22oi_4", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31o_1 = logic_module( + "sky130_fd_sc_hd__a31o_1", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_2 = logic_module( + "sky130_fd_sc_hd__a31o_2", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_4 = logic_module( + "sky130_fd_sc_hd__a31o_4", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31oi_1 = logic_module( + "sky130_fd_sc_hd__a31oi_1", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_2 = logic_module( + "sky130_fd_sc_hd__a31oi_2", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_4 = logic_module( + "sky130_fd_sc_hd__a31oi_4", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32o_1 = logic_module( + "sky130_fd_sc_hd__a32o_1", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_2 = logic_module( + "sky130_fd_sc_hd__a32o_2", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_4 = logic_module( + "sky130_fd_sc_hd__a32o_4", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32oi_1 = logic_module( + "sky130_fd_sc_hd__a32oi_1", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_2 = logic_module( + "sky130_fd_sc_hd__a32oi_2", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_4 = logic_module( + "sky130_fd_sc_hd__a32oi_4", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41o_1 = logic_module( + "sky130_fd_sc_hd__a41o_1", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_2 = logic_module( + "sky130_fd_sc_hd__a41o_2", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_4 = logic_module( + "sky130_fd_sc_hd__a41o_4", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41oi_1 = logic_module( + "sky130_fd_sc_hd__a41oi_1", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_2 = logic_module( + "sky130_fd_sc_hd__a41oi_2", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_4 = logic_module( + "sky130_fd_sc_hd__a41oi_4", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211o_1 = logic_module( + "sky130_fd_sc_hd__a211o_1", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_2 = logic_module( + "sky130_fd_sc_hd__a211o_2", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_4 = logic_module( + "sky130_fd_sc_hd__a211o_4", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211oi_1 = logic_module( + "sky130_fd_sc_hd__a211oi_1", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_2 = logic_module( + "sky130_fd_sc_hd__a211oi_2", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_4 = logic_module( + "sky130_fd_sc_hd__a211oi_4", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221o_1 = logic_module( + "sky130_fd_sc_hd__a221o_1", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_2 = logic_module( + "sky130_fd_sc_hd__a221o_2", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_4 = logic_module( + "sky130_fd_sc_hd__a221o_4", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221oi_1 = logic_module( + "sky130_fd_sc_hd__a221oi_1", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_2 = logic_module( + "sky130_fd_sc_hd__a221oi_2", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_4 = logic_module( + "sky130_fd_sc_hd__a221oi_4", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a222oi_1 = logic_module( + "sky130_fd_sc_hd__a222oi_1", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311o_1 = logic_module( + "sky130_fd_sc_hd__a311o_1", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_2 = logic_module( + "sky130_fd_sc_hd__a311o_2", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_4 = logic_module( + "sky130_fd_sc_hd__a311o_4", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311oi_1 = logic_module( + "sky130_fd_sc_hd__a311oi_1", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_2 = logic_module( + "sky130_fd_sc_hd__a311oi_2", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_4 = logic_module( + "sky130_fd_sc_hd__a311oi_4", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111o_1 = logic_module( + "sky130_fd_sc_hd__a2111o_1", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_2 = logic_module( + "sky130_fd_sc_hd__a2111o_2", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_4 = logic_module( + "sky130_fd_sc_hd__a2111o_4", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111oi_0 = logic_module( + "sky130_fd_sc_hd__a2111oi_0", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_1 = logic_module( + "sky130_fd_sc_hd__a2111oi_1", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_2 = logic_module( + "sky130_fd_sc_hd__a2111oi_2", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_4 = logic_module( + "sky130_fd_sc_hd__a2111oi_4", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +and2_0 = logic_module( + "sky130_fd_sc_hd__and2_0", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_1 = logic_module( + "sky130_fd_sc_hd__and2_1", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_2 = logic_module( + "sky130_fd_sc_hd__and2_2", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_4 = logic_module( + "sky130_fd_sc_hd__and2_4", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_1 = logic_module( + "sky130_fd_sc_hd__and2b_1", + "High Density", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_2 = logic_module( + "sky130_fd_sc_hd__and2b_2", + "High Density", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_4 = logic_module( + "sky130_fd_sc_hd__and2b_4", + "High Density", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_1 = logic_module( + "sky130_fd_sc_hd__and3_1", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_2 = logic_module( + "sky130_fd_sc_hd__and3_2", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_4 = logic_module( + "sky130_fd_sc_hd__and3_4", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_1 = logic_module( + "sky130_fd_sc_hd__and3b_1", + "High Density", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_2 = logic_module( + "sky130_fd_sc_hd__and3b_2", + "High Density", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_4 = logic_module( + "sky130_fd_sc_hd__and3b_4", + "High Density", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_1 = logic_module( + "sky130_fd_sc_hd__and4_1", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_2 = logic_module( + "sky130_fd_sc_hd__and4_2", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_4 = logic_module( + "sky130_fd_sc_hd__and4_4", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_1 = logic_module( + "sky130_fd_sc_hd__and4b_1", + "High Density", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_2 = logic_module( + "sky130_fd_sc_hd__and4b_2", + "High Density", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_4 = logic_module( + "sky130_fd_sc_hd__and4b_4", + "High Density", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_1 = logic_module( + "sky130_fd_sc_hd__and4bb_1", + "High Density", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_2 = logic_module( + "sky130_fd_sc_hd__and4bb_2", + "High Density", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_4 = logic_module( + "sky130_fd_sc_hd__and4bb_4", + "High Density", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_1 = logic_module( + "sky130_fd_sc_hd__buf_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_2 = logic_module( + "sky130_fd_sc_hd__buf_2", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_4 = logic_module( + "sky130_fd_sc_hd__buf_4", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_6 = logic_module( + "sky130_fd_sc_hd__buf_6", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_8 = logic_module( + "sky130_fd_sc_hd__buf_8", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_12 = logic_module( + "sky130_fd_sc_hd__buf_12", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_16 = logic_module( + "sky130_fd_sc_hd__buf_16", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufbuf_8 = logic_module( + "sky130_fd_sc_hd__bufbuf_8", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufbuf_16 = logic_module( + "sky130_fd_sc_hd__bufbuf_16", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufinv_8 = logic_module( + "sky130_fd_sc_hd__bufinv_8", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +bufinv_16 = logic_module( + "sky130_fd_sc_hd__bufinv_16", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkbuf_1 = logic_module( + "sky130_fd_sc_hd__clkbuf_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_2 = logic_module( + "sky130_fd_sc_hd__clkbuf_2", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_4 = logic_module( + "sky130_fd_sc_hd__clkbuf_4", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_8 = logic_module( + "sky130_fd_sc_hd__clkbuf_8", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_16 = logic_module( + "sky130_fd_sc_hd__clkbuf_16", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s15_1 = logic_module( + "sky130_fd_sc_hd__clkdlybuf4s15_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s15_2 = logic_module( + "sky130_fd_sc_hd__clkdlybuf4s15_2", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s18_1 = logic_module( + "sky130_fd_sc_hd__clkdlybuf4s18_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s18_2 = logic_module( + "sky130_fd_sc_hd__clkdlybuf4s18_2", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s25_1 = logic_module( + "sky130_fd_sc_hd__clkdlybuf4s25_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s25_2 = logic_module( + "sky130_fd_sc_hd__clkdlybuf4s25_2", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s50_1 = logic_module( + "sky130_fd_sc_hd__clkdlybuf4s50_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s50_2 = logic_module( + "sky130_fd_sc_hd__clkdlybuf4s50_2", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkinv_1 = logic_module( + "sky130_fd_sc_hd__clkinv_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_2 = logic_module( + "sky130_fd_sc_hd__clkinv_2", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_4 = logic_module( + "sky130_fd_sc_hd__clkinv_4", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_8 = logic_module( + "sky130_fd_sc_hd__clkinv_8", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_16 = logic_module( + "sky130_fd_sc_hd__clkinv_16", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinvlp_2 = logic_module( + "sky130_fd_sc_hd__clkinvlp_2", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinvlp_4 = logic_module( + "sky130_fd_sc_hd__clkinvlp_4", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +conb_1 = logic_module( + "sky130_fd_sc_hd__conb_1", + "High Density", + ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], +) +decap_3 = logic_module( + "sky130_fd_sc_hd__decap_3", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_4 = logic_module( + "sky130_fd_sc_hd__decap_4", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_6 = logic_module( + "sky130_fd_sc_hd__decap_6", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_8 = logic_module( + "sky130_fd_sc_hd__decap_8", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_12 = logic_module( + "sky130_fd_sc_hd__decap_12", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +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"], +) +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"], +) +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"], +) +dfrbp_1 = logic_module( + "sky130_fd_sc_hd__dfrbp_1", + "High Density", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrbp_2 = logic_module( + "sky130_fd_sc_hd__dfrbp_2", + "High Density", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrtn_1 = logic_module( + "sky130_fd_sc_hd__dfrtn_1", + "High Density", + ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_1 = logic_module( + "sky130_fd_sc_hd__dfrtp_1", + "High Density", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_2 = logic_module( + "sky130_fd_sc_hd__dfrtp_2", + "High Density", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_4 = logic_module( + "sky130_fd_sc_hd__dfrtp_4", + "High Density", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfsbp_1 = logic_module( + "sky130_fd_sc_hd__dfsbp_1", + "High Density", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfsbp_2 = logic_module( + "sky130_fd_sc_hd__dfsbp_2", + "High Density", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfstp_1 = logic_module( + "sky130_fd_sc_hd__dfstp_1", + "High Density", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_2 = logic_module( + "sky130_fd_sc_hd__dfstp_2", + "High Density", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_4 = logic_module( + "sky130_fd_sc_hd__dfstp_4", + "High Density", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxbp_1 = logic_module( + "sky130_fd_sc_hd__dfxbp_1", + "High Density", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxbp_2 = logic_module( + "sky130_fd_sc_hd__dfxbp_2", + "High Density", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxtp_1 = logic_module( + "sky130_fd_sc_hd__dfxtp_1", + "High Density", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_2 = logic_module( + "sky130_fd_sc_hd__dfxtp_2", + "High Density", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_4 = logic_module( + "sky130_fd_sc_hd__dfxtp_4", + "High Density", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +diode_2 = logic_module( + "sky130_fd_sc_hd__diode_2", + "High Density", + ["DIODE", "VGND", "VNB", "VPB", "VPWR"], +) +dlclkp_1 = logic_module( + "sky130_fd_sc_hd__dlclkp_1", + "High Density", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_2 = logic_module( + "sky130_fd_sc_hd__dlclkp_2", + "High Density", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_4 = logic_module( + "sky130_fd_sc_hd__dlclkp_4", + "High Density", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlrbn_1 = logic_module( + "sky130_fd_sc_hd__dlrbn_1", + "High Density", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbn_2 = logic_module( + "sky130_fd_sc_hd__dlrbn_2", + "High Density", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_1 = logic_module( + "sky130_fd_sc_hd__dlrbp_1", + "High Density", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_2 = logic_module( + "sky130_fd_sc_hd__dlrbp_2", + "High Density", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrtn_1 = logic_module( + "sky130_fd_sc_hd__dlrtn_1", + "High Density", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_2 = logic_module( + "sky130_fd_sc_hd__dlrtn_2", + "High Density", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_4 = logic_module( + "sky130_fd_sc_hd__dlrtn_4", + "High Density", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_1 = logic_module( + "sky130_fd_sc_hd__dlrtp_1", + "High Density", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_2 = logic_module( + "sky130_fd_sc_hd__dlrtp_2", + "High Density", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_4 = logic_module( + "sky130_fd_sc_hd__dlrtp_4", + "High Density", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxbn_1 = logic_module( + "sky130_fd_sc_hd__dlxbn_1", + "High Density", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbn_2 = logic_module( + "sky130_fd_sc_hd__dlxbn_2", + "High Density", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbp_1 = logic_module( + "sky130_fd_sc_hd__dlxbp_1", + "High Density", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxtn_1 = logic_module( + "sky130_fd_sc_hd__dlxtn_1", + "High Density", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_2 = logic_module( + "sky130_fd_sc_hd__dlxtn_2", + "High Density", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_4 = logic_module( + "sky130_fd_sc_hd__dlxtn_4", + "High Density", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtp_1 = logic_module( + "sky130_fd_sc_hd__dlxtp_1", + "High Density", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlygate4sd1_1 = logic_module( + "sky130_fd_sc_hd__dlygate4sd1_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4sd2_1 = logic_module( + "sky130_fd_sc_hd__dlygate4sd2_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4sd3_1 = logic_module( + "sky130_fd_sc_hd__dlygate4sd3_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s2s_1 = logic_module( + "sky130_fd_sc_hd__dlymetal6s2s_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s4s_1 = logic_module( + "sky130_fd_sc_hd__dlymetal6s4s_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s6s_1 = logic_module( + "sky130_fd_sc_hd__dlymetal6s6s_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +ebufn_1 = logic_module( + "sky130_fd_sc_hd__ebufn_1", + "High Density", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_2 = logic_module( + "sky130_fd_sc_hd__ebufn_2", + "High Density", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_4 = logic_module( + "sky130_fd_sc_hd__ebufn_4", + "High Density", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_8 = logic_module( + "sky130_fd_sc_hd__ebufn_8", + "High Density", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +edfxbp_1 = logic_module( + "sky130_fd_sc_hd__edfxbp_1", + "High Density", + ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +edfxtp_1 = logic_module( + "sky130_fd_sc_hd__edfxtp_1", + "High Density", + ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +einvn_0 = logic_module( + "sky130_fd_sc_hd__einvn_0", + "High Density", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_1 = logic_module( + "sky130_fd_sc_hd__einvn_1", + "High Density", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_2 = logic_module( + "sky130_fd_sc_hd__einvn_2", + "High Density", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_4 = logic_module( + "sky130_fd_sc_hd__einvn_4", + "High Density", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_8 = logic_module( + "sky130_fd_sc_hd__einvn_8", + "High Density", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_1 = logic_module( + "sky130_fd_sc_hd__einvp_1", + "High Density", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_2 = logic_module( + "sky130_fd_sc_hd__einvp_2", + "High Density", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_4 = logic_module( + "sky130_fd_sc_hd__einvp_4", + "High Density", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_8 = logic_module( + "sky130_fd_sc_hd__einvp_8", + "High Density", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +fa_1 = logic_module( + "sky130_fd_sc_hd__fa_1", + "High Density", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_2 = logic_module( + "sky130_fd_sc_hd__fa_2", + "High Density", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_4 = logic_module( + "sky130_fd_sc_hd__fa_4", + "High Density", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_1 = logic_module( + "sky130_fd_sc_hd__fah_1", + "High Density", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fahcin_1 = logic_module( + "sky130_fd_sc_hd__fahcin_1", + "High Density", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fahcon_1 = logic_module( + "sky130_fd_sc_hd__fahcon_1", + "High Density", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"], +) +fill_1 = logic_module( + "sky130_fd_sc_hd__fill_1", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_2 = logic_module( + "sky130_fd_sc_hd__fill_2", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_4 = logic_module( + "sky130_fd_sc_hd__fill_4", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_8 = logic_module( + "sky130_fd_sc_hd__fill_8", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +ha_1 = logic_module( + "sky130_fd_sc_hd__ha_1", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_2 = logic_module( + "sky130_fd_sc_hd__ha_2", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_4 = logic_module( + "sky130_fd_sc_hd__ha_4", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +inv_1 = logic_module( + "sky130_fd_sc_hd__inv_1", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_2 = logic_module( + "sky130_fd_sc_hd__inv_2", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_4 = logic_module( + "sky130_fd_sc_hd__inv_4", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_6 = logic_module( + "sky130_fd_sc_hd__inv_6", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_8 = logic_module( + "sky130_fd_sc_hd__inv_8", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_12 = logic_module( + "sky130_fd_sc_hd__inv_12", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_16 = logic_module( + "sky130_fd_sc_hd__inv_16", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +lpflow_bleeder_1 = logic_module( + "sky130_fd_sc_hd__lpflow_bleeder_1", + "High Density", + ["SHORT", "VGND", "VNB", "VPB", "VPWR"], +) +lpflow_clkbufkapwr_1 = logic_module( + "sky130_fd_sc_hd__lpflow_clkbufkapwr_1", + "High Density", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_clkbufkapwr_2 = logic_module( + "sky130_fd_sc_hd__lpflow_clkbufkapwr_2", + "High Density", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_clkbufkapwr_4 = logic_module( + "sky130_fd_sc_hd__lpflow_clkbufkapwr_4", + "High Density", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_clkbufkapwr_8 = logic_module( + "sky130_fd_sc_hd__lpflow_clkbufkapwr_8", + "High Density", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_clkbufkapwr_16 = logic_module( + "sky130_fd_sc_hd__lpflow_clkbufkapwr_16", + "High Density", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_clkinvkapwr_1 = logic_module( + "sky130_fd_sc_hd__lpflow_clkinvkapwr_1", + "High Density", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +lpflow_clkinvkapwr_2 = logic_module( + "sky130_fd_sc_hd__lpflow_clkinvkapwr_2", + "High Density", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +lpflow_clkinvkapwr_4 = logic_module( + "sky130_fd_sc_hd__lpflow_clkinvkapwr_4", + "High Density", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +lpflow_clkinvkapwr_8 = logic_module( + "sky130_fd_sc_hd__lpflow_clkinvkapwr_8", + "High Density", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +lpflow_clkinvkapwr_16 = logic_module( + "sky130_fd_sc_hd__lpflow_clkinvkapwr_16", + "High Density", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +lpflow_decapkapwr_3 = logic_module( + "sky130_fd_sc_hd__lpflow_decapkapwr_3", + "High Density", + ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +lpflow_decapkapwr_4 = logic_module( + "sky130_fd_sc_hd__lpflow_decapkapwr_4", + "High Density", + ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +lpflow_decapkapwr_6 = logic_module( + "sky130_fd_sc_hd__lpflow_decapkapwr_6", + "High Density", + ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +lpflow_decapkapwr_8 = logic_module( + "sky130_fd_sc_hd__lpflow_decapkapwr_8", + "High Density", + ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +lpflow_decapkapwr_12 = logic_module( + "sky130_fd_sc_hd__lpflow_decapkapwr_12", + "High Density", + ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +lpflow_inputiso0n_1 = logic_module( + "sky130_fd_sc_hd__lpflow_inputiso0n_1", + "High Density", + ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_inputiso0p_1 = logic_module( + "sky130_fd_sc_hd__lpflow_inputiso0p_1", + "High Density", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_inputiso1n_1 = logic_module( + "sky130_fd_sc_hd__lpflow_inputiso1n_1", + "High Density", + ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_inputiso1p_1 = logic_module( + "sky130_fd_sc_hd__lpflow_inputiso1p_1", + "High Density", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_inputisolatch_1 = logic_module( + "sky130_fd_sc_hd__lpflow_inputisolatch_1", + "High Density", + ["D", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +lpflow_isobufsrc_1 = logic_module( + "sky130_fd_sc_hd__lpflow_isobufsrc_1", + "High Density", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_isobufsrc_2 = logic_module( + "sky130_fd_sc_hd__lpflow_isobufsrc_2", + "High Density", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_isobufsrc_4 = logic_module( + "sky130_fd_sc_hd__lpflow_isobufsrc_4", + "High Density", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_isobufsrc_8 = logic_module( + "sky130_fd_sc_hd__lpflow_isobufsrc_8", + "High Density", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_isobufsrc_16 = logic_module( + "sky130_fd_sc_hd__lpflow_isobufsrc_16", + "High Density", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +lpflow_isobufsrckapwr_16 = logic_module( + "sky130_fd_sc_hd__lpflow_isobufsrckapwr_16", + "High Density", + ["A", "SLEEP", "KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +macro_sparecell = logic_module( + "sky130_fd_sc_hd__macro_sparecell", + "High Density", + ["VGND", "VNB", "VPB", "VPWR", "LO"], +) +maj3_1 = logic_module( + "sky130_fd_sc_hd__maj3_1", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_2 = logic_module( + "sky130_fd_sc_hd__maj3_2", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_4 = logic_module( + "sky130_fd_sc_hd__maj3_4", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_1 = logic_module( + "sky130_fd_sc_hd__mux2_1", + "High Density", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_2 = logic_module( + "sky130_fd_sc_hd__mux2_2", + "High Density", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_4 = logic_module( + "sky130_fd_sc_hd__mux2_4", + "High Density", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_8 = logic_module( + "sky130_fd_sc_hd__mux2_8", + "High Density", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2i_1 = logic_module( + "sky130_fd_sc_hd__mux2i_1", + "High Density", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_2 = logic_module( + "sky130_fd_sc_hd__mux2i_2", + "High Density", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_4 = logic_module( + "sky130_fd_sc_hd__mux2i_4", + "High Density", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux4_1 = logic_module( + "sky130_fd_sc_hd__mux4_1", + "High Density", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_2 = logic_module( + "sky130_fd_sc_hd__mux4_2", + "High Density", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_4 = logic_module( + "sky130_fd_sc_hd__mux4_4", + "High Density", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +nand2_1 = logic_module( + "sky130_fd_sc_hd__nand2_1", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_2 = logic_module( + "sky130_fd_sc_hd__nand2_2", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_4 = logic_module( + "sky130_fd_sc_hd__nand2_4", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_8 = logic_module( + "sky130_fd_sc_hd__nand2_8", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_1 = logic_module( + "sky130_fd_sc_hd__nand2b_1", + "High Density", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_2 = logic_module( + "sky130_fd_sc_hd__nand2b_2", + "High Density", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_4 = logic_module( + "sky130_fd_sc_hd__nand2b_4", + "High Density", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_1 = logic_module( + "sky130_fd_sc_hd__nand3_1", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_2 = logic_module( + "sky130_fd_sc_hd__nand3_2", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_4 = logic_module( + "sky130_fd_sc_hd__nand3_4", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_1 = logic_module( + "sky130_fd_sc_hd__nand3b_1", + "High Density", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_2 = logic_module( + "sky130_fd_sc_hd__nand3b_2", + "High Density", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_4 = logic_module( + "sky130_fd_sc_hd__nand3b_4", + "High Density", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_1 = logic_module( + "sky130_fd_sc_hd__nand4_1", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_2 = logic_module( + "sky130_fd_sc_hd__nand4_2", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_4 = logic_module( + "sky130_fd_sc_hd__nand4_4", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_1 = logic_module( + "sky130_fd_sc_hd__nand4b_1", + "High Density", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_2 = logic_module( + "sky130_fd_sc_hd__nand4b_2", + "High Density", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_4 = logic_module( + "sky130_fd_sc_hd__nand4b_4", + "High Density", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_1 = logic_module( + "sky130_fd_sc_hd__nand4bb_1", + "High Density", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_2 = logic_module( + "sky130_fd_sc_hd__nand4bb_2", + "High Density", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_4 = logic_module( + "sky130_fd_sc_hd__nand4bb_4", + "High Density", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_1 = logic_module( + "sky130_fd_sc_hd__nor2_1", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_2 = logic_module( + "sky130_fd_sc_hd__nor2_2", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_4 = logic_module( + "sky130_fd_sc_hd__nor2_4", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_8 = logic_module( + "sky130_fd_sc_hd__nor2_8", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_1 = logic_module( + "sky130_fd_sc_hd__nor2b_1", + "High Density", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_2 = logic_module( + "sky130_fd_sc_hd__nor2b_2", + "High Density", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_4 = logic_module( + "sky130_fd_sc_hd__nor2b_4", + "High Density", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_1 = logic_module( + "sky130_fd_sc_hd__nor3_1", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_2 = logic_module( + "sky130_fd_sc_hd__nor3_2", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_4 = logic_module( + "sky130_fd_sc_hd__nor3_4", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_1 = logic_module( + "sky130_fd_sc_hd__nor3b_1", + "High Density", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_2 = logic_module( + "sky130_fd_sc_hd__nor3b_2", + "High Density", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_4 = logic_module( + "sky130_fd_sc_hd__nor3b_4", + "High Density", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_1 = logic_module( + "sky130_fd_sc_hd__nor4_1", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_2 = logic_module( + "sky130_fd_sc_hd__nor4_2", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_4 = logic_module( + "sky130_fd_sc_hd__nor4_4", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_1 = logic_module( + "sky130_fd_sc_hd__nor4b_1", + "High Density", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_2 = logic_module( + "sky130_fd_sc_hd__nor4b_2", + "High Density", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_4 = logic_module( + "sky130_fd_sc_hd__nor4b_4", + "High Density", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_1 = logic_module( + "sky130_fd_sc_hd__nor4bb_1", + "High Density", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_2 = logic_module( + "sky130_fd_sc_hd__nor4bb_2", + "High Density", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_4 = logic_module( + "sky130_fd_sc_hd__nor4bb_4", + "High Density", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2a_1 = logic_module( + "sky130_fd_sc_hd__o2bb2a_1", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_2 = logic_module( + "sky130_fd_sc_hd__o2bb2a_2", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_4 = logic_module( + "sky130_fd_sc_hd__o2bb2a_4", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2ai_1 = logic_module( + "sky130_fd_sc_hd__o2bb2ai_1", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_2 = logic_module( + "sky130_fd_sc_hd__o2bb2ai_2", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_4 = logic_module( + "sky130_fd_sc_hd__o2bb2ai_4", + "High Density", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21a_1 = logic_module( + "sky130_fd_sc_hd__o21a_1", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_2 = logic_module( + "sky130_fd_sc_hd__o21a_2", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_4 = logic_module( + "sky130_fd_sc_hd__o21a_4", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ai_0 = logic_module( + "sky130_fd_sc_hd__o21ai_0", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_1 = logic_module( + "sky130_fd_sc_hd__o21ai_1", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_2 = logic_module( + "sky130_fd_sc_hd__o21ai_2", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_4 = logic_module( + "sky130_fd_sc_hd__o21ai_4", + "High Density", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ba_1 = logic_module( + "sky130_fd_sc_hd__o21ba_1", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_2 = logic_module( + "sky130_fd_sc_hd__o21ba_2", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_4 = logic_module( + "sky130_fd_sc_hd__o21ba_4", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21bai_1 = logic_module( + "sky130_fd_sc_hd__o21bai_1", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_2 = logic_module( + "sky130_fd_sc_hd__o21bai_2", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_4 = logic_module( + "sky130_fd_sc_hd__o21bai_4", + "High Density", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22a_1 = logic_module( + "sky130_fd_sc_hd__o22a_1", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_2 = logic_module( + "sky130_fd_sc_hd__o22a_2", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_4 = logic_module( + "sky130_fd_sc_hd__o22a_4", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22ai_1 = logic_module( + "sky130_fd_sc_hd__o22ai_1", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_2 = logic_module( + "sky130_fd_sc_hd__o22ai_2", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_4 = logic_module( + "sky130_fd_sc_hd__o22ai_4", + "High Density", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31a_1 = logic_module( + "sky130_fd_sc_hd__o31a_1", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_2 = logic_module( + "sky130_fd_sc_hd__o31a_2", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_4 = logic_module( + "sky130_fd_sc_hd__o31a_4", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31ai_1 = logic_module( + "sky130_fd_sc_hd__o31ai_1", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_2 = logic_module( + "sky130_fd_sc_hd__o31ai_2", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_4 = logic_module( + "sky130_fd_sc_hd__o31ai_4", + "High Density", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32a_1 = logic_module( + "sky130_fd_sc_hd__o32a_1", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_2 = logic_module( + "sky130_fd_sc_hd__o32a_2", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_4 = logic_module( + "sky130_fd_sc_hd__o32a_4", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32ai_1 = logic_module( + "sky130_fd_sc_hd__o32ai_1", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_2 = logic_module( + "sky130_fd_sc_hd__o32ai_2", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_4 = logic_module( + "sky130_fd_sc_hd__o32ai_4", + "High Density", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41a_1 = logic_module( + "sky130_fd_sc_hd__o41a_1", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_2 = logic_module( + "sky130_fd_sc_hd__o41a_2", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_4 = logic_module( + "sky130_fd_sc_hd__o41a_4", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41ai_1 = logic_module( + "sky130_fd_sc_hd__o41ai_1", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_2 = logic_module( + "sky130_fd_sc_hd__o41ai_2", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_4 = logic_module( + "sky130_fd_sc_hd__o41ai_4", + "High Density", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211a_1 = logic_module( + "sky130_fd_sc_hd__o211a_1", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_2 = logic_module( + "sky130_fd_sc_hd__o211a_2", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_4 = logic_module( + "sky130_fd_sc_hd__o211a_4", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211ai_1 = logic_module( + "sky130_fd_sc_hd__o211ai_1", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_2 = logic_module( + "sky130_fd_sc_hd__o211ai_2", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_4 = logic_module( + "sky130_fd_sc_hd__o211ai_4", + "High Density", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221a_1 = logic_module( + "sky130_fd_sc_hd__o221a_1", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_2 = logic_module( + "sky130_fd_sc_hd__o221a_2", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_4 = logic_module( + "sky130_fd_sc_hd__o221a_4", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221ai_1 = logic_module( + "sky130_fd_sc_hd__o221ai_1", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_2 = logic_module( + "sky130_fd_sc_hd__o221ai_2", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_4 = logic_module( + "sky130_fd_sc_hd__o221ai_4", + "High Density", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311a_1 = logic_module( + "sky130_fd_sc_hd__o311a_1", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_2 = logic_module( + "sky130_fd_sc_hd__o311a_2", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_4 = logic_module( + "sky130_fd_sc_hd__o311a_4", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311ai_0 = logic_module( + "sky130_fd_sc_hd__o311ai_0", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_1 = logic_module( + "sky130_fd_sc_hd__o311ai_1", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_2 = logic_module( + "sky130_fd_sc_hd__o311ai_2", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_4 = logic_module( + "sky130_fd_sc_hd__o311ai_4", + "High Density", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111a_1 = logic_module( + "sky130_fd_sc_hd__o2111a_1", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_2 = logic_module( + "sky130_fd_sc_hd__o2111a_2", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_4 = logic_module( + "sky130_fd_sc_hd__o2111a_4", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111ai_1 = logic_module( + "sky130_fd_sc_hd__o2111ai_1", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_2 = logic_module( + "sky130_fd_sc_hd__o2111ai_2", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_4 = logic_module( + "sky130_fd_sc_hd__o2111ai_4", + "High Density", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +or2_0 = logic_module( + "sky130_fd_sc_hd__or2_0", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_1 = logic_module( + "sky130_fd_sc_hd__or2_1", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_2 = logic_module( + "sky130_fd_sc_hd__or2_2", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_4 = logic_module( + "sky130_fd_sc_hd__or2_4", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_1 = logic_module( + "sky130_fd_sc_hd__or2b_1", + "High Density", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_2 = logic_module( + "sky130_fd_sc_hd__or2b_2", + "High Density", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_4 = logic_module( + "sky130_fd_sc_hd__or2b_4", + "High Density", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_1 = logic_module( + "sky130_fd_sc_hd__or3_1", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_2 = logic_module( + "sky130_fd_sc_hd__or3_2", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_4 = logic_module( + "sky130_fd_sc_hd__or3_4", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_1 = logic_module( + "sky130_fd_sc_hd__or3b_1", + "High Density", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_2 = logic_module( + "sky130_fd_sc_hd__or3b_2", + "High Density", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_4 = logic_module( + "sky130_fd_sc_hd__or3b_4", + "High Density", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_1 = logic_module( + "sky130_fd_sc_hd__or4_1", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_2 = logic_module( + "sky130_fd_sc_hd__or4_2", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_4 = logic_module( + "sky130_fd_sc_hd__or4_4", + "High Density", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_1 = logic_module( + "sky130_fd_sc_hd__or4b_1", + "High Density", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_2 = logic_module( + "sky130_fd_sc_hd__or4b_2", + "High Density", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_4 = logic_module( + "sky130_fd_sc_hd__or4b_4", + "High Density", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_1 = logic_module( + "sky130_fd_sc_hd__or4bb_1", + "High Density", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_2 = logic_module( + "sky130_fd_sc_hd__or4bb_2", + "High Density", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_4 = logic_module( + "sky130_fd_sc_hd__or4bb_4", + "High Density", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +probe_p_8 = logic_module( + "sky130_fd_sc_hd__probe_p_8", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +probec_p_8 = logic_module( + "sky130_fd_sc_hd__probec_p_8", + "High Density", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +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"], +) +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"], +) +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", + ], +) +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"], +) +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"], +) +sdfrtn_1 = logic_module( + "sky130_fd_sc_hd__sdfrtn_1", + "High Density", + ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_1 = logic_module( + "sky130_fd_sc_hd__sdfrtp_1", + "High Density", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_2 = logic_module( + "sky130_fd_sc_hd__sdfrtp_2", + "High Density", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_4 = logic_module( + "sky130_fd_sc_hd__sdfrtp_4", + "High Density", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +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"], +) +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"], +) +sdfstp_1 = logic_module( + "sky130_fd_sc_hd__sdfstp_1", + "High Density", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_2 = logic_module( + "sky130_fd_sc_hd__sdfstp_2", + "High Density", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_4 = logic_module( + "sky130_fd_sc_hd__sdfstp_4", + "High Density", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxbp_1 = logic_module( + "sky130_fd_sc_hd__sdfxbp_1", + "High Density", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxbp_2 = logic_module( + "sky130_fd_sc_hd__sdfxbp_2", + "High Density", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxtp_1 = logic_module( + "sky130_fd_sc_hd__sdfxtp_1", + "High Density", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_2 = logic_module( + "sky130_fd_sc_hd__sdfxtp_2", + "High Density", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_4 = logic_module( + "sky130_fd_sc_hd__sdfxtp_4", + "High Density", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdlclkp_1 = logic_module( + "sky130_fd_sc_hd__sdlclkp_1", + "High Density", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_2 = logic_module( + "sky130_fd_sc_hd__sdlclkp_2", + "High Density", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_4 = logic_module( + "sky130_fd_sc_hd__sdlclkp_4", + "High Density", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sedfxbp_1 = logic_module( + "sky130_fd_sc_hd__sedfxbp_1", + "High Density", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sedfxbp_2 = logic_module( + "sky130_fd_sc_hd__sedfxbp_2", + "High Density", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sedfxtp_1 = logic_module( + "sky130_fd_sc_hd__sedfxtp_1", + "High Density", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sedfxtp_2 = logic_module( + "sky130_fd_sc_hd__sedfxtp_2", + "High Density", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sedfxtp_4 = logic_module( + "sky130_fd_sc_hd__sedfxtp_4", + "High Density", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +tap_1 = logic_module( + "sky130_fd_sc_hd__tap_1", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +tap_2 = logic_module( + "sky130_fd_sc_hd__tap_2", "High Density", ["VGND", "VNB", "VPB", "VPWR"] +) +tapvgnd2_1 = logic_module( + "sky130_fd_sc_hd__tapvgnd2_1", "High Density", ["VGND", "VPB", "VPWR"] +) +tapvgnd_1 = logic_module( + "sky130_fd_sc_hd__tapvgnd_1", "High Density", ["VGND", "VPB", "VPWR"] +) +tapvpwrvgnd_1 = logic_module( + "sky130_fd_sc_hd__tapvpwrvgnd_1", "High Density", ["VGND", "VPWR"] +) +xnor2_1 = logic_module( + "sky130_fd_sc_hd__xnor2_1", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_2 = logic_module( + "sky130_fd_sc_hd__xnor2_2", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_4 = logic_module( + "sky130_fd_sc_hd__xnor2_4", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor3_1 = logic_module( + "sky130_fd_sc_hd__xnor3_1", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_2 = logic_module( + "sky130_fd_sc_hd__xnor3_2", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_4 = logic_module( + "sky130_fd_sc_hd__xnor3_4", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_1 = logic_module( + "sky130_fd_sc_hd__xor2_1", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_2 = logic_module( + "sky130_fd_sc_hd__xor2_2", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_4 = logic_module( + "sky130_fd_sc_hd__xor2_4", + "High Density", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_1 = logic_module( + "sky130_fd_sc_hd__xor3_1", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_2 = logic_module( + "sky130_fd_sc_hd__xor3_2", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_4 = logic_module( + "sky130_fd_sc_hd__xor3_4", + "High Density", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) diff --git a/sky130/hdl21/sky130_gf/digital_cells/high_speed.py b/sky130/hdl21/sky130_gf/digital_cells/high_speed.py new file mode 100644 index 000000000..09ab10980 --- /dev/null +++ b/sky130/hdl21/sky130_gf/digital_cells/high_speed.py @@ -0,0 +1,1918 @@ +from ..pdk_data import logic_module + +a2bb2o_1 = logic_module( + "sky130_fd_sc_hs__a2bb2o_1", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_2 = logic_module( + "sky130_fd_sc_hs__a2bb2o_2", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_4 = logic_module( + "sky130_fd_sc_hs__a2bb2o_4", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2oi_1 = logic_module( + "sky130_fd_sc_hs__a2bb2oi_1", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_2 = logic_module( + "sky130_fd_sc_hs__a2bb2oi_2", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_4 = logic_module( + "sky130_fd_sc_hs__a2bb2oi_4", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21bo_1 = logic_module( + "sky130_fd_sc_hs__a21bo_1", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_2 = logic_module( + "sky130_fd_sc_hs__a21bo_2", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_4 = logic_module( + "sky130_fd_sc_hs__a21bo_4", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21boi_1 = logic_module( + "sky130_fd_sc_hs__a21boi_1", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_2 = logic_module( + "sky130_fd_sc_hs__a21boi_2", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_4 = logic_module( + "sky130_fd_sc_hs__a21boi_4", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21o_1 = logic_module( + "sky130_fd_sc_hs__a21o_1", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_2 = logic_module( + "sky130_fd_sc_hs__a21o_2", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_4 = logic_module( + "sky130_fd_sc_hs__a21o_4", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21oi_1 = logic_module( + "sky130_fd_sc_hs__a21oi_1", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_2 = logic_module( + "sky130_fd_sc_hs__a21oi_2", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_4 = logic_module( + "sky130_fd_sc_hs__a21oi_4", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22o_1 = logic_module( + "sky130_fd_sc_hs__a22o_1", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_2 = logic_module( + "sky130_fd_sc_hs__a22o_2", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_4 = logic_module( + "sky130_fd_sc_hs__a22o_4", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22oi_1 = logic_module( + "sky130_fd_sc_hs__a22oi_1", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_2 = logic_module( + "sky130_fd_sc_hs__a22oi_2", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_4 = logic_module( + "sky130_fd_sc_hs__a22oi_4", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31o_1 = logic_module( + "sky130_fd_sc_hs__a31o_1", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_2 = logic_module( + "sky130_fd_sc_hs__a31o_2", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_4 = logic_module( + "sky130_fd_sc_hs__a31o_4", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31oi_1 = logic_module( + "sky130_fd_sc_hs__a31oi_1", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_2 = logic_module( + "sky130_fd_sc_hs__a31oi_2", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_4 = logic_module( + "sky130_fd_sc_hs__a31oi_4", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32o_1 = logic_module( + "sky130_fd_sc_hs__a32o_1", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_2 = logic_module( + "sky130_fd_sc_hs__a32o_2", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_4 = logic_module( + "sky130_fd_sc_hs__a32o_4", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32oi_1 = logic_module( + "sky130_fd_sc_hs__a32oi_1", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_2 = logic_module( + "sky130_fd_sc_hs__a32oi_2", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_4 = logic_module( + "sky130_fd_sc_hs__a32oi_4", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41o_1 = logic_module( + "sky130_fd_sc_hs__a41o_1", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_2 = logic_module( + "sky130_fd_sc_hs__a41o_2", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_4 = logic_module( + "sky130_fd_sc_hs__a41o_4", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41oi_1 = logic_module( + "sky130_fd_sc_hs__a41oi_1", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_2 = logic_module( + "sky130_fd_sc_hs__a41oi_2", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_4 = logic_module( + "sky130_fd_sc_hs__a41oi_4", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211o_1 = logic_module( + "sky130_fd_sc_hs__a211o_1", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_2 = logic_module( + "sky130_fd_sc_hs__a211o_2", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_4 = logic_module( + "sky130_fd_sc_hs__a211o_4", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211oi_1 = logic_module( + "sky130_fd_sc_hs__a211oi_1", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_2 = logic_module( + "sky130_fd_sc_hs__a211oi_2", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_4 = logic_module( + "sky130_fd_sc_hs__a211oi_4", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221o_1 = logic_module( + "sky130_fd_sc_hs__a221o_1", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_2 = logic_module( + "sky130_fd_sc_hs__a221o_2", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_4 = logic_module( + "sky130_fd_sc_hs__a221o_4", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221oi_1 = logic_module( + "sky130_fd_sc_hs__a221oi_1", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_2 = logic_module( + "sky130_fd_sc_hs__a221oi_2", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_4 = logic_module( + "sky130_fd_sc_hs__a221oi_4", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a222o_1 = logic_module( + "sky130_fd_sc_hs__a222o_1", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a222o_2 = logic_module( + "sky130_fd_sc_hs__a222o_2", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a222oi_1 = logic_module( + "sky130_fd_sc_hs__a222oi_1", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a222oi_2 = logic_module( + "sky130_fd_sc_hs__a222oi_2", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311o_1 = logic_module( + "sky130_fd_sc_hs__a311o_1", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_2 = logic_module( + "sky130_fd_sc_hs__a311o_2", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_4 = logic_module( + "sky130_fd_sc_hs__a311o_4", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311oi_1 = logic_module( + "sky130_fd_sc_hs__a311oi_1", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_2 = logic_module( + "sky130_fd_sc_hs__a311oi_2", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_4 = logic_module( + "sky130_fd_sc_hs__a311oi_4", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111o_1 = logic_module( + "sky130_fd_sc_hs__a2111o_1", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_2 = logic_module( + "sky130_fd_sc_hs__a2111o_2", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_4 = logic_module( + "sky130_fd_sc_hs__a2111o_4", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111oi_1 = logic_module( + "sky130_fd_sc_hs__a2111oi_1", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_2 = logic_module( + "sky130_fd_sc_hs__a2111oi_2", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_4 = logic_module( + "sky130_fd_sc_hs__a2111oi_4", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +and2_1 = logic_module( + "sky130_fd_sc_hs__and2_1", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_2 = logic_module( + "sky130_fd_sc_hs__and2_2", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_4 = logic_module( + "sky130_fd_sc_hs__and2_4", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_1 = logic_module( + "sky130_fd_sc_hs__and2b_1", + "High Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_2 = logic_module( + "sky130_fd_sc_hs__and2b_2", + "High Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_4 = logic_module( + "sky130_fd_sc_hs__and2b_4", + "High Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_1 = logic_module( + "sky130_fd_sc_hs__and3_1", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_2 = logic_module( + "sky130_fd_sc_hs__and3_2", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_4 = logic_module( + "sky130_fd_sc_hs__and3_4", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_1 = logic_module( + "sky130_fd_sc_hs__and3b_1", + "High Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_2 = logic_module( + "sky130_fd_sc_hs__and3b_2", + "High Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_4 = logic_module( + "sky130_fd_sc_hs__and3b_4", + "High Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_1 = logic_module( + "sky130_fd_sc_hs__and4_1", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_2 = logic_module( + "sky130_fd_sc_hs__and4_2", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_4 = logic_module( + "sky130_fd_sc_hs__and4_4", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_1 = logic_module( + "sky130_fd_sc_hs__and4b_1", + "High Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_2 = logic_module( + "sky130_fd_sc_hs__and4b_2", + "High Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_4 = logic_module( + "sky130_fd_sc_hs__and4b_4", + "High Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_1 = logic_module( + "sky130_fd_sc_hs__and4bb_1", + "High Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_2 = logic_module( + "sky130_fd_sc_hs__and4bb_2", + "High Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_4 = logic_module( + "sky130_fd_sc_hs__and4bb_4", + "High Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_1 = logic_module( + "sky130_fd_sc_hs__buf_1", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_2 = logic_module( + "sky130_fd_sc_hs__buf_2", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_4 = logic_module( + "sky130_fd_sc_hs__buf_4", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_8 = logic_module( + "sky130_fd_sc_hs__buf_8", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_16 = logic_module( + "sky130_fd_sc_hs__buf_16", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufbuf_8 = logic_module( + "sky130_fd_sc_hs__bufbuf_8", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufbuf_16 = logic_module( + "sky130_fd_sc_hs__bufbuf_16", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufinv_8 = logic_module( + "sky130_fd_sc_hs__bufinv_8", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +bufinv_16 = logic_module( + "sky130_fd_sc_hs__bufinv_16", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkbuf_1 = logic_module( + "sky130_fd_sc_hs__clkbuf_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_2 = logic_module( + "sky130_fd_sc_hs__clkbuf_2", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_4 = logic_module( + "sky130_fd_sc_hs__clkbuf_4", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_8 = logic_module( + "sky130_fd_sc_hs__clkbuf_8", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_16 = logic_module( + "sky130_fd_sc_hs__clkbuf_16", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlyinv3sd1_1 = logic_module( + "sky130_fd_sc_hs__clkdlyinv3sd1_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv3sd2_1 = logic_module( + "sky130_fd_sc_hs__clkdlyinv3sd2_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv3sd3_1 = logic_module( + "sky130_fd_sc_hs__clkdlyinv3sd3_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv5sd1_1 = logic_module( + "sky130_fd_sc_hs__clkdlyinv5sd1_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv5sd2_1 = logic_module( + "sky130_fd_sc_hs__clkdlyinv5sd2_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv5sd3_1 = logic_module( + "sky130_fd_sc_hs__clkdlyinv5sd3_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_1 = logic_module( + "sky130_fd_sc_hs__clkinv_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_2 = logic_module( + "sky130_fd_sc_hs__clkinv_2", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_4 = logic_module( + "sky130_fd_sc_hs__clkinv_4", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_8 = logic_module( + "sky130_fd_sc_hs__clkinv_8", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_16 = logic_module( + "sky130_fd_sc_hs__clkinv_16", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +conb_1 = logic_module( + "sky130_fd_sc_hs__conb_1", + "High Speed", + ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], +) +decap_4 = logic_module( + "sky130_fd_sc_hs__decap_4", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_8 = logic_module( + "sky130_fd_sc_hs__decap_8", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +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"], +) +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"], +) +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"], +) +dfrbp_1 = logic_module( + "sky130_fd_sc_hs__dfrbp_1", + "High Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrbp_2 = logic_module( + "sky130_fd_sc_hs__dfrbp_2", + "High Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrtn_1 = logic_module( + "sky130_fd_sc_hs__dfrtn_1", + "High Speed", + ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_1 = logic_module( + "sky130_fd_sc_hs__dfrtp_1", + "High Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_2 = logic_module( + "sky130_fd_sc_hs__dfrtp_2", + "High Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_4 = logic_module( + "sky130_fd_sc_hs__dfrtp_4", + "High Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfsbp_1 = logic_module( + "sky130_fd_sc_hs__dfsbp_1", + "High Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfsbp_2 = logic_module( + "sky130_fd_sc_hs__dfsbp_2", + "High Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfstp_1 = logic_module( + "sky130_fd_sc_hs__dfstp_1", + "High Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_2 = logic_module( + "sky130_fd_sc_hs__dfstp_2", + "High Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_4 = logic_module( + "sky130_fd_sc_hs__dfstp_4", + "High Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxbp_1 = logic_module( + "sky130_fd_sc_hs__dfxbp_1", + "High Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxbp_2 = logic_module( + "sky130_fd_sc_hs__dfxbp_2", + "High Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxtp_1 = logic_module( + "sky130_fd_sc_hs__dfxtp_1", + "High Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_2 = logic_module( + "sky130_fd_sc_hs__dfxtp_2", + "High Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_4 = logic_module( + "sky130_fd_sc_hs__dfxtp_4", + "High Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +diode_2 = logic_module( + "sky130_fd_sc_hs__diode_2", + "High Speed", + ["DIODE", "VGND", "VNB", "VPB", "VPWR"], +) +dlclkp_1 = logic_module( + "sky130_fd_sc_hs__dlclkp_1", + "High Speed", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_2 = logic_module( + "sky130_fd_sc_hs__dlclkp_2", + "High Speed", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_4 = logic_module( + "sky130_fd_sc_hs__dlclkp_4", + "High Speed", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlrbn_1 = logic_module( + "sky130_fd_sc_hs__dlrbn_1", + "High Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbn_2 = logic_module( + "sky130_fd_sc_hs__dlrbn_2", + "High Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_1 = logic_module( + "sky130_fd_sc_hs__dlrbp_1", + "High Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_2 = logic_module( + "sky130_fd_sc_hs__dlrbp_2", + "High Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrtn_1 = logic_module( + "sky130_fd_sc_hs__dlrtn_1", + "High Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_2 = logic_module( + "sky130_fd_sc_hs__dlrtn_2", + "High Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_4 = logic_module( + "sky130_fd_sc_hs__dlrtn_4", + "High Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_1 = logic_module( + "sky130_fd_sc_hs__dlrtp_1", + "High Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_2 = logic_module( + "sky130_fd_sc_hs__dlrtp_2", + "High Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_4 = logic_module( + "sky130_fd_sc_hs__dlrtp_4", + "High Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxbn_1 = logic_module( + "sky130_fd_sc_hs__dlxbn_1", + "High Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbn_2 = logic_module( + "sky130_fd_sc_hs__dlxbn_2", + "High Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbp_1 = logic_module( + "sky130_fd_sc_hs__dlxbp_1", + "High Speed", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxtn_1 = logic_module( + "sky130_fd_sc_hs__dlxtn_1", + "High Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_2 = logic_module( + "sky130_fd_sc_hs__dlxtn_2", + "High Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_4 = logic_module( + "sky130_fd_sc_hs__dlxtn_4", + "High Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtp_1 = logic_module( + "sky130_fd_sc_hs__dlxtp_1", + "High Speed", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlygate4sd1_1 = logic_module( + "sky130_fd_sc_hs__dlygate4sd1_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4sd2_1 = logic_module( + "sky130_fd_sc_hs__dlygate4sd2_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4sd3_1 = logic_module( + "sky130_fd_sc_hs__dlygate4sd3_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s2s_1 = logic_module( + "sky130_fd_sc_hs__dlymetal6s2s_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s4s_1 = logic_module( + "sky130_fd_sc_hs__dlymetal6s4s_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s6s_1 = logic_module( + "sky130_fd_sc_hs__dlymetal6s6s_1", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +ebufn_1 = logic_module( + "sky130_fd_sc_hs__ebufn_1", + "High Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_2 = logic_module( + "sky130_fd_sc_hs__ebufn_2", + "High Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_4 = logic_module( + "sky130_fd_sc_hs__ebufn_4", + "High Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_8 = logic_module( + "sky130_fd_sc_hs__ebufn_8", + "High Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +edfxbp_1 = logic_module( + "sky130_fd_sc_hs__edfxbp_1", + "High Speed", + ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +edfxtp_1 = logic_module( + "sky130_fd_sc_hs__edfxtp_1", + "High Speed", + ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +einvn_1 = logic_module( + "sky130_fd_sc_hs__einvn_1", + "High Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_2 = logic_module( + "sky130_fd_sc_hs__einvn_2", + "High Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_4 = logic_module( + "sky130_fd_sc_hs__einvn_4", + "High Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_8 = logic_module( + "sky130_fd_sc_hs__einvn_8", + "High Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_1 = logic_module( + "sky130_fd_sc_hs__einvp_1", + "High Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_2 = logic_module( + "sky130_fd_sc_hs__einvp_2", + "High Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_4 = logic_module( + "sky130_fd_sc_hs__einvp_4", + "High Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_8 = logic_module( + "sky130_fd_sc_hs__einvp_8", + "High Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +fa_1 = logic_module( + "sky130_fd_sc_hs__fa_1", + "High Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_2 = logic_module( + "sky130_fd_sc_hs__fa_2", + "High Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_4 = logic_module( + "sky130_fd_sc_hs__fa_4", + "High Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_1 = logic_module( + "sky130_fd_sc_hs__fah_1", + "High Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_2 = logic_module( + "sky130_fd_sc_hs__fah_2", + "High Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_4 = logic_module( + "sky130_fd_sc_hs__fah_4", + "High Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fahcin_1 = logic_module( + "sky130_fd_sc_hs__fahcin_1", + "High Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fahcon_1 = logic_module( + "sky130_fd_sc_hs__fahcon_1", + "High Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"], +) +fill_1 = logic_module( + "sky130_fd_sc_hs__fill_1", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_2 = logic_module( + "sky130_fd_sc_hs__fill_2", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_4 = logic_module( + "sky130_fd_sc_hs__fill_4", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_8 = logic_module( + "sky130_fd_sc_hs__fill_8", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_diode_2 = logic_module( + "sky130_fd_sc_hs__fill_diode_2", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_diode_4 = logic_module( + "sky130_fd_sc_hs__fill_diode_4", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_diode_8 = logic_module( + "sky130_fd_sc_hs__fill_diode_8", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +ha_1 = logic_module( + "sky130_fd_sc_hs__ha_1", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_2 = logic_module( + "sky130_fd_sc_hs__ha_2", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_4 = logic_module( + "sky130_fd_sc_hs__ha_4", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +inv_1 = logic_module( + "sky130_fd_sc_hs__inv_1", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_2 = logic_module( + "sky130_fd_sc_hs__inv_2", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_4 = logic_module( + "sky130_fd_sc_hs__inv_4", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_8 = logic_module( + "sky130_fd_sc_hs__inv_8", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_16 = logic_module( + "sky130_fd_sc_hs__inv_16", + "High Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +maj3_1 = logic_module( + "sky130_fd_sc_hs__maj3_1", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_2 = logic_module( + "sky130_fd_sc_hs__maj3_2", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_4 = logic_module( + "sky130_fd_sc_hs__maj3_4", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_1 = logic_module( + "sky130_fd_sc_hs__mux2_1", + "High Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_2 = logic_module( + "sky130_fd_sc_hs__mux2_2", + "High Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_4 = logic_module( + "sky130_fd_sc_hs__mux2_4", + "High Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2i_1 = logic_module( + "sky130_fd_sc_hs__mux2i_1", + "High Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_2 = logic_module( + "sky130_fd_sc_hs__mux2i_2", + "High Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_4 = logic_module( + "sky130_fd_sc_hs__mux2i_4", + "High Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux4_1 = logic_module( + "sky130_fd_sc_hs__mux4_1", + "High Speed", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_2 = logic_module( + "sky130_fd_sc_hs__mux4_2", + "High Speed", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_4 = logic_module( + "sky130_fd_sc_hs__mux4_4", + "High Speed", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +nand2_1 = logic_module( + "sky130_fd_sc_hs__nand2_1", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_2 = logic_module( + "sky130_fd_sc_hs__nand2_2", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_4 = logic_module( + "sky130_fd_sc_hs__nand2_4", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_8 = logic_module( + "sky130_fd_sc_hs__nand2_8", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_1 = logic_module( + "sky130_fd_sc_hs__nand2b_1", + "High Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_2 = logic_module( + "sky130_fd_sc_hs__nand2b_2", + "High Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_4 = logic_module( + "sky130_fd_sc_hs__nand2b_4", + "High Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_1 = logic_module( + "sky130_fd_sc_hs__nand3_1", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_2 = logic_module( + "sky130_fd_sc_hs__nand3_2", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_4 = logic_module( + "sky130_fd_sc_hs__nand3_4", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_1 = logic_module( + "sky130_fd_sc_hs__nand3b_1", + "High Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_2 = logic_module( + "sky130_fd_sc_hs__nand3b_2", + "High Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_4 = logic_module( + "sky130_fd_sc_hs__nand3b_4", + "High Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_1 = logic_module( + "sky130_fd_sc_hs__nand4_1", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_2 = logic_module( + "sky130_fd_sc_hs__nand4_2", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_4 = logic_module( + "sky130_fd_sc_hs__nand4_4", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_1 = logic_module( + "sky130_fd_sc_hs__nand4b_1", + "High Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_2 = logic_module( + "sky130_fd_sc_hs__nand4b_2", + "High Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_4 = logic_module( + "sky130_fd_sc_hs__nand4b_4", + "High Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_1 = logic_module( + "sky130_fd_sc_hs__nand4bb_1", + "High Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_2 = logic_module( + "sky130_fd_sc_hs__nand4bb_2", + "High Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_4 = logic_module( + "sky130_fd_sc_hs__nand4bb_4", + "High Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_1 = logic_module( + "sky130_fd_sc_hs__nor2_1", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_2 = logic_module( + "sky130_fd_sc_hs__nor2_2", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_4 = logic_module( + "sky130_fd_sc_hs__nor2_4", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_8 = logic_module( + "sky130_fd_sc_hs__nor2_8", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_1 = logic_module( + "sky130_fd_sc_hs__nor2b_1", + "High Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_2 = logic_module( + "sky130_fd_sc_hs__nor2b_2", + "High Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_4 = logic_module( + "sky130_fd_sc_hs__nor2b_4", + "High Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_1 = logic_module( + "sky130_fd_sc_hs__nor3_1", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_2 = logic_module( + "sky130_fd_sc_hs__nor3_2", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_4 = logic_module( + "sky130_fd_sc_hs__nor3_4", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_1 = logic_module( + "sky130_fd_sc_hs__nor3b_1", + "High Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_2 = logic_module( + "sky130_fd_sc_hs__nor3b_2", + "High Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_4 = logic_module( + "sky130_fd_sc_hs__nor3b_4", + "High Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_1 = logic_module( + "sky130_fd_sc_hs__nor4_1", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_2 = logic_module( + "sky130_fd_sc_hs__nor4_2", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_4 = logic_module( + "sky130_fd_sc_hs__nor4_4", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_1 = logic_module( + "sky130_fd_sc_hs__nor4b_1", + "High Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_2 = logic_module( + "sky130_fd_sc_hs__nor4b_2", + "High Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_4 = logic_module( + "sky130_fd_sc_hs__nor4b_4", + "High Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_1 = logic_module( + "sky130_fd_sc_hs__nor4bb_1", + "High Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_2 = logic_module( + "sky130_fd_sc_hs__nor4bb_2", + "High Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_4 = logic_module( + "sky130_fd_sc_hs__nor4bb_4", + "High Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2a_1 = logic_module( + "sky130_fd_sc_hs__o2bb2a_1", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_2 = logic_module( + "sky130_fd_sc_hs__o2bb2a_2", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_4 = logic_module( + "sky130_fd_sc_hs__o2bb2a_4", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2ai_1 = logic_module( + "sky130_fd_sc_hs__o2bb2ai_1", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_2 = logic_module( + "sky130_fd_sc_hs__o2bb2ai_2", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_4 = logic_module( + "sky130_fd_sc_hs__o2bb2ai_4", + "High Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21a_1 = logic_module( + "sky130_fd_sc_hs__o21a_1", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_2 = logic_module( + "sky130_fd_sc_hs__o21a_2", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_4 = logic_module( + "sky130_fd_sc_hs__o21a_4", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ai_1 = logic_module( + "sky130_fd_sc_hs__o21ai_1", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_2 = logic_module( + "sky130_fd_sc_hs__o21ai_2", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_4 = logic_module( + "sky130_fd_sc_hs__o21ai_4", + "High Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ba_1 = logic_module( + "sky130_fd_sc_hs__o21ba_1", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_2 = logic_module( + "sky130_fd_sc_hs__o21ba_2", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_4 = logic_module( + "sky130_fd_sc_hs__o21ba_4", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21bai_1 = logic_module( + "sky130_fd_sc_hs__o21bai_1", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_2 = logic_module( + "sky130_fd_sc_hs__o21bai_2", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_4 = logic_module( + "sky130_fd_sc_hs__o21bai_4", + "High Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22a_1 = logic_module( + "sky130_fd_sc_hs__o22a_1", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_2 = logic_module( + "sky130_fd_sc_hs__o22a_2", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_4 = logic_module( + "sky130_fd_sc_hs__o22a_4", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22ai_1 = logic_module( + "sky130_fd_sc_hs__o22ai_1", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_2 = logic_module( + "sky130_fd_sc_hs__o22ai_2", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_4 = logic_module( + "sky130_fd_sc_hs__o22ai_4", + "High Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31a_1 = logic_module( + "sky130_fd_sc_hs__o31a_1", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_2 = logic_module( + "sky130_fd_sc_hs__o31a_2", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_4 = logic_module( + "sky130_fd_sc_hs__o31a_4", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31ai_1 = logic_module( + "sky130_fd_sc_hs__o31ai_1", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_2 = logic_module( + "sky130_fd_sc_hs__o31ai_2", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_4 = logic_module( + "sky130_fd_sc_hs__o31ai_4", + "High Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32a_1 = logic_module( + "sky130_fd_sc_hs__o32a_1", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_2 = logic_module( + "sky130_fd_sc_hs__o32a_2", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_4 = logic_module( + "sky130_fd_sc_hs__o32a_4", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32ai_1 = logic_module( + "sky130_fd_sc_hs__o32ai_1", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_2 = logic_module( + "sky130_fd_sc_hs__o32ai_2", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_4 = logic_module( + "sky130_fd_sc_hs__o32ai_4", + "High Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41a_1 = logic_module( + "sky130_fd_sc_hs__o41a_1", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_2 = logic_module( + "sky130_fd_sc_hs__o41a_2", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_4 = logic_module( + "sky130_fd_sc_hs__o41a_4", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41ai_1 = logic_module( + "sky130_fd_sc_hs__o41ai_1", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_2 = logic_module( + "sky130_fd_sc_hs__o41ai_2", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_4 = logic_module( + "sky130_fd_sc_hs__o41ai_4", + "High Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211a_1 = logic_module( + "sky130_fd_sc_hs__o211a_1", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_2 = logic_module( + "sky130_fd_sc_hs__o211a_2", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_4 = logic_module( + "sky130_fd_sc_hs__o211a_4", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211ai_1 = logic_module( + "sky130_fd_sc_hs__o211ai_1", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_2 = logic_module( + "sky130_fd_sc_hs__o211ai_2", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_4 = logic_module( + "sky130_fd_sc_hs__o211ai_4", + "High Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221a_1 = logic_module( + "sky130_fd_sc_hs__o221a_1", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_2 = logic_module( + "sky130_fd_sc_hs__o221a_2", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_4 = logic_module( + "sky130_fd_sc_hs__o221a_4", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221ai_1 = logic_module( + "sky130_fd_sc_hs__o221ai_1", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_2 = logic_module( + "sky130_fd_sc_hs__o221ai_2", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_4 = logic_module( + "sky130_fd_sc_hs__o221ai_4", + "High Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311a_1 = logic_module( + "sky130_fd_sc_hs__o311a_1", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_2 = logic_module( + "sky130_fd_sc_hs__o311a_2", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_4 = logic_module( + "sky130_fd_sc_hs__o311a_4", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311ai_1 = logic_module( + "sky130_fd_sc_hs__o311ai_1", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_2 = logic_module( + "sky130_fd_sc_hs__o311ai_2", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_4 = logic_module( + "sky130_fd_sc_hs__o311ai_4", + "High Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111a_1 = logic_module( + "sky130_fd_sc_hs__o2111a_1", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_2 = logic_module( + "sky130_fd_sc_hs__o2111a_2", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_4 = logic_module( + "sky130_fd_sc_hs__o2111a_4", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111ai_1 = logic_module( + "sky130_fd_sc_hs__o2111ai_1", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_2 = logic_module( + "sky130_fd_sc_hs__o2111ai_2", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_4 = logic_module( + "sky130_fd_sc_hs__o2111ai_4", + "High Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +or2_1 = logic_module( + "sky130_fd_sc_hs__or2_1", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_2 = logic_module( + "sky130_fd_sc_hs__or2_2", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_4 = logic_module( + "sky130_fd_sc_hs__or2_4", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_1 = logic_module( + "sky130_fd_sc_hs__or2b_1", + "High Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_2 = logic_module( + "sky130_fd_sc_hs__or2b_2", + "High Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_4 = logic_module( + "sky130_fd_sc_hs__or2b_4", + "High Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_1 = logic_module( + "sky130_fd_sc_hs__or3_1", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_2 = logic_module( + "sky130_fd_sc_hs__or3_2", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_4 = logic_module( + "sky130_fd_sc_hs__or3_4", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_1 = logic_module( + "sky130_fd_sc_hs__or3b_1", + "High Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_2 = logic_module( + "sky130_fd_sc_hs__or3b_2", + "High Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_4 = logic_module( + "sky130_fd_sc_hs__or3b_4", + "High Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_1 = logic_module( + "sky130_fd_sc_hs__or4_1", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_2 = logic_module( + "sky130_fd_sc_hs__or4_2", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_4 = logic_module( + "sky130_fd_sc_hs__or4_4", + "High Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_1 = logic_module( + "sky130_fd_sc_hs__or4b_1", + "High Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_2 = logic_module( + "sky130_fd_sc_hs__or4b_2", + "High Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_4 = logic_module( + "sky130_fd_sc_hs__or4b_4", + "High Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_1 = logic_module( + "sky130_fd_sc_hs__or4bb_1", + "High Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_2 = logic_module( + "sky130_fd_sc_hs__or4bb_2", + "High Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_4 = logic_module( + "sky130_fd_sc_hs__or4bb_4", + "High Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +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"], +) +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"], +) +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", + ], +) +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"], +) +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"], +) +sdfrtn_1 = logic_module( + "sky130_fd_sc_hs__sdfrtn_1", + "High Speed", + ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_1 = logic_module( + "sky130_fd_sc_hs__sdfrtp_1", + "High Speed", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_2 = logic_module( + "sky130_fd_sc_hs__sdfrtp_2", + "High Speed", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_4 = logic_module( + "sky130_fd_sc_hs__sdfrtp_4", + "High Speed", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +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"], +) +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"], +) +sdfstp_1 = logic_module( + "sky130_fd_sc_hs__sdfstp_1", + "High Speed", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_2 = logic_module( + "sky130_fd_sc_hs__sdfstp_2", + "High Speed", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_4 = logic_module( + "sky130_fd_sc_hs__sdfstp_4", + "High Speed", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxbp_1 = logic_module( + "sky130_fd_sc_hs__sdfxbp_1", + "High Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxbp_2 = logic_module( + "sky130_fd_sc_hs__sdfxbp_2", + "High Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxtp_1 = logic_module( + "sky130_fd_sc_hs__sdfxtp_1", + "High Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_2 = logic_module( + "sky130_fd_sc_hs__sdfxtp_2", + "High Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_4 = logic_module( + "sky130_fd_sc_hs__sdfxtp_4", + "High Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdlclkp_1 = logic_module( + "sky130_fd_sc_hs__sdlclkp_1", + "High Speed", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_2 = logic_module( + "sky130_fd_sc_hs__sdlclkp_2", + "High Speed", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_4 = logic_module( + "sky130_fd_sc_hs__sdlclkp_4", + "High Speed", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sedfxbp_1 = logic_module( + "sky130_fd_sc_hs__sedfxbp_1", + "High Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sedfxbp_2 = logic_module( + "sky130_fd_sc_hs__sedfxbp_2", + "High Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sedfxtp_1 = logic_module( + "sky130_fd_sc_hs__sedfxtp_1", + "High Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sedfxtp_2 = logic_module( + "sky130_fd_sc_hs__sedfxtp_2", + "High Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sedfxtp_4 = logic_module( + "sky130_fd_sc_hs__sedfxtp_4", + "High Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +tap_1 = logic_module( + "sky130_fd_sc_hs__tap_1", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +tap_2 = logic_module( + "sky130_fd_sc_hs__tap_2", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +tapmet1_2 = logic_module( + "sky130_fd_sc_hs__tapmet1_2", "High Speed", ["VGND", "VPB", "VPWR"] +) +tapvgnd2_1 = logic_module( + "sky130_fd_sc_hs__tapvgnd2_1", "High Speed", ["VGND", "VPB", "VPWR"] +) +tapvgnd_1 = logic_module( + "sky130_fd_sc_hs__tapvgnd_1", "High Speed", ["VGND", "VPB", "VPWR"] +) +tapvpwrvgnd_1 = logic_module( + "sky130_fd_sc_hs__tapvpwrvgnd_1", "High Speed", ["VGND", "VPWR"] +) +xnor2_1 = logic_module( + "sky130_fd_sc_hs__xnor2_1", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_2 = logic_module( + "sky130_fd_sc_hs__xnor2_2", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_4 = logic_module( + "sky130_fd_sc_hs__xnor2_4", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor3_1 = logic_module( + "sky130_fd_sc_hs__xnor3_1", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_2 = logic_module( + "sky130_fd_sc_hs__xnor3_2", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_4 = logic_module( + "sky130_fd_sc_hs__xnor3_4", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_1 = logic_module( + "sky130_fd_sc_hs__xor2_1", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_2 = logic_module( + "sky130_fd_sc_hs__xor2_2", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_4 = logic_module( + "sky130_fd_sc_hs__xor2_4", + "High Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_1 = logic_module( + "sky130_fd_sc_hs__xor3_1", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_2 = logic_module( + "sky130_fd_sc_hs__xor3_2", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_4 = logic_module( + "sky130_fd_sc_hs__xor3_4", + "High Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) diff --git a/sky130/hdl21/sky130_gf/digital_cells/low_leakage.py b/sky130/hdl21/sky130_gf/digital_cells/low_leakage.py new file mode 100644 index 000000000..fcdfbbdd8 --- /dev/null +++ b/sky130/hdl21/sky130_gf/digital_cells/low_leakage.py @@ -0,0 +1,1661 @@ +from ..pdk_data import logic_module + +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +a21bo_1 = logic_module( + "sky130_fd_sc_hdll__a21bo_1", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_2 = logic_module( + "sky130_fd_sc_hdll__a21bo_2", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_4 = logic_module( + "sky130_fd_sc_hdll__a21bo_4", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21boi_1 = logic_module( + "sky130_fd_sc_hdll__a21boi_1", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_2 = logic_module( + "sky130_fd_sc_hdll__a21boi_2", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_4 = logic_module( + "sky130_fd_sc_hdll__a21boi_4", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21o_1 = logic_module( + "sky130_fd_sc_hdll__a21o_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_2 = logic_module( + "sky130_fd_sc_hdll__a21o_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_4 = logic_module( + "sky130_fd_sc_hdll__a21o_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_6 = logic_module( + "sky130_fd_sc_hdll__a21o_6", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_8 = logic_module( + "sky130_fd_sc_hdll__a21o_8", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21oi_1 = logic_module( + "sky130_fd_sc_hdll__a21oi_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_2 = logic_module( + "sky130_fd_sc_hdll__a21oi_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_4 = logic_module( + "sky130_fd_sc_hdll__a21oi_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22o_1 = logic_module( + "sky130_fd_sc_hdll__a22o_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_2 = logic_module( + "sky130_fd_sc_hdll__a22o_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_4 = logic_module( + "sky130_fd_sc_hdll__a22o_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22oi_1 = logic_module( + "sky130_fd_sc_hdll__a22oi_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_2 = logic_module( + "sky130_fd_sc_hdll__a22oi_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_4 = logic_module( + "sky130_fd_sc_hdll__a22oi_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31o_1 = logic_module( + "sky130_fd_sc_hdll__a31o_1", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_2 = logic_module( + "sky130_fd_sc_hdll__a31o_2", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_4 = logic_module( + "sky130_fd_sc_hdll__a31o_4", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31oi_1 = logic_module( + "sky130_fd_sc_hdll__a31oi_1", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_2 = logic_module( + "sky130_fd_sc_hdll__a31oi_2", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_4 = logic_module( + "sky130_fd_sc_hdll__a31oi_4", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32o_1 = logic_module( + "sky130_fd_sc_hdll__a32o_1", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_2 = logic_module( + "sky130_fd_sc_hdll__a32o_2", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_4 = logic_module( + "sky130_fd_sc_hdll__a32o_4", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32oi_1 = logic_module( + "sky130_fd_sc_hdll__a32oi_1", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_2 = logic_module( + "sky130_fd_sc_hdll__a32oi_2", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_4 = logic_module( + "sky130_fd_sc_hdll__a32oi_4", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211o_1 = logic_module( + "sky130_fd_sc_hdll__a211o_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_2 = logic_module( + "sky130_fd_sc_hdll__a211o_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_4 = logic_module( + "sky130_fd_sc_hdll__a211o_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211oi_1 = logic_module( + "sky130_fd_sc_hdll__a211oi_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_2 = logic_module( + "sky130_fd_sc_hdll__a211oi_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_4 = logic_module( + "sky130_fd_sc_hdll__a211oi_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_1 = logic_module( + "sky130_fd_sc_hdll__a221oi_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_2 = logic_module( + "sky130_fd_sc_hdll__a221oi_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_4 = logic_module( + "sky130_fd_sc_hdll__a221oi_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +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"], +) +and2_1 = logic_module( + "sky130_fd_sc_hdll__and2_1", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_2 = logic_module( + "sky130_fd_sc_hdll__and2_2", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_4 = logic_module( + "sky130_fd_sc_hdll__and2_4", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_6 = logic_module( + "sky130_fd_sc_hdll__and2_6", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_8 = logic_module( + "sky130_fd_sc_hdll__and2_8", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_1 = logic_module( + "sky130_fd_sc_hdll__and2b_1", + "High Density Low Leakage", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_2 = logic_module( + "sky130_fd_sc_hdll__and2b_2", + "High Density Low Leakage", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_4 = logic_module( + "sky130_fd_sc_hdll__and2b_4", + "High Density Low Leakage", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_1 = logic_module( + "sky130_fd_sc_hdll__and3_1", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_2 = logic_module( + "sky130_fd_sc_hdll__and3_2", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_4 = logic_module( + "sky130_fd_sc_hdll__and3_4", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_1 = logic_module( + "sky130_fd_sc_hdll__and3b_1", + "High Density Low Leakage", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_2 = logic_module( + "sky130_fd_sc_hdll__and3b_2", + "High Density Low Leakage", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_4 = logic_module( + "sky130_fd_sc_hdll__and3b_4", + "High Density Low Leakage", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_1 = logic_module( + "sky130_fd_sc_hdll__and4_1", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_2 = logic_module( + "sky130_fd_sc_hdll__and4_2", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_4 = logic_module( + "sky130_fd_sc_hdll__and4_4", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_1 = logic_module( + "sky130_fd_sc_hdll__and4b_1", + "High Density Low Leakage", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_2 = logic_module( + "sky130_fd_sc_hdll__and4b_2", + "High Density Low Leakage", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_4 = logic_module( + "sky130_fd_sc_hdll__and4b_4", + "High Density Low Leakage", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +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"], +) +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"], +) +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"], +) +buf_1 = logic_module( + "sky130_fd_sc_hdll__buf_1", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_2 = logic_module( + "sky130_fd_sc_hdll__buf_2", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_4 = logic_module( + "sky130_fd_sc_hdll__buf_4", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_6 = logic_module( + "sky130_fd_sc_hdll__buf_6", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_8 = logic_module( + "sky130_fd_sc_hdll__buf_8", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_12 = logic_module( + "sky130_fd_sc_hdll__buf_12", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_16 = logic_module( + "sky130_fd_sc_hdll__buf_16", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufbuf_8 = logic_module( + "sky130_fd_sc_hdll__bufbuf_8", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufbuf_16 = logic_module( + "sky130_fd_sc_hdll__bufbuf_16", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufinv_8 = logic_module( + "sky130_fd_sc_hdll__bufinv_8", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +bufinv_16 = logic_module( + "sky130_fd_sc_hdll__bufinv_16", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkbuf_1 = logic_module( + "sky130_fd_sc_hdll__clkbuf_1", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_2 = logic_module( + "sky130_fd_sc_hdll__clkbuf_2", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_4 = logic_module( + "sky130_fd_sc_hdll__clkbuf_4", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_6 = logic_module( + "sky130_fd_sc_hdll__clkbuf_6", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_8 = logic_module( + "sky130_fd_sc_hdll__clkbuf_8", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_12 = logic_module( + "sky130_fd_sc_hdll__clkbuf_12", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_16 = logic_module( + "sky130_fd_sc_hdll__clkbuf_16", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkinv_1 = logic_module( + "sky130_fd_sc_hdll__clkinv_1", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_2 = logic_module( + "sky130_fd_sc_hdll__clkinv_2", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_4 = logic_module( + "sky130_fd_sc_hdll__clkinv_4", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_8 = logic_module( + "sky130_fd_sc_hdll__clkinv_8", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_12 = logic_module( + "sky130_fd_sc_hdll__clkinv_12", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_16 = logic_module( + "sky130_fd_sc_hdll__clkinv_16", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinvlp_2 = logic_module( + "sky130_fd_sc_hdll__clkinvlp_2", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinvlp_4 = logic_module( + "sky130_fd_sc_hdll__clkinvlp_4", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkmux2_1 = logic_module( + "sky130_fd_sc_hdll__clkmux2_1", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkmux2_2 = logic_module( + "sky130_fd_sc_hdll__clkmux2_2", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkmux2_4 = logic_module( + "sky130_fd_sc_hdll__clkmux2_4", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +conb_1 = logic_module( + "sky130_fd_sc_hdll__conb_1", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], +) +decap_3 = logic_module( + "sky130_fd_sc_hdll__decap_3", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR"], +) +decap_4 = logic_module( + "sky130_fd_sc_hdll__decap_4", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR"], +) +decap_6 = logic_module( + "sky130_fd_sc_hdll__decap_6", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR"], +) +decap_8 = logic_module( + "sky130_fd_sc_hdll__decap_8", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR"], +) +decap_12 = logic_module( + "sky130_fd_sc_hdll__decap_12", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR"], +) +dfrtp_1 = logic_module( + "sky130_fd_sc_hdll__dfrtp_1", + "High Density Low Leakage", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_2 = logic_module( + "sky130_fd_sc_hdll__dfrtp_2", + "High Density Low Leakage", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_4 = logic_module( + "sky130_fd_sc_hdll__dfrtp_4", + "High Density Low Leakage", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_1 = logic_module( + "sky130_fd_sc_hdll__dfstp_1", + "High Density Low Leakage", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_2 = logic_module( + "sky130_fd_sc_hdll__dfstp_2", + "High Density Low Leakage", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_4 = logic_module( + "sky130_fd_sc_hdll__dfstp_4", + "High Density Low Leakage", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +diode_2 = logic_module( + "sky130_fd_sc_hdll__diode_2", + "High Density Low Leakage", + ["DIODE", "VGND", "VNB", "VPB", "VPWR"], +) +diode_4 = logic_module( + "sky130_fd_sc_hdll__diode_4", + "High Density Low Leakage", + ["DIODE", "VGND", "VNB", "VPB", "VPWR"], +) +diode_6 = logic_module( + "sky130_fd_sc_hdll__diode_6", + "High Density Low Leakage", + ["DIODE", "VGND", "VNB", "VPB", "VPWR"], +) +diode_8 = logic_module( + "sky130_fd_sc_hdll__diode_8", + "High Density Low Leakage", + ["DIODE", "VGND", "VNB", "VPB", "VPWR"], +) +dlrtn_1 = logic_module( + "sky130_fd_sc_hdll__dlrtn_1", + "High Density Low Leakage", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_2 = logic_module( + "sky130_fd_sc_hdll__dlrtn_2", + "High Density Low Leakage", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_4 = logic_module( + "sky130_fd_sc_hdll__dlrtn_4", + "High Density Low Leakage", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_1 = logic_module( + "sky130_fd_sc_hdll__dlrtp_1", + "High Density Low Leakage", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_2 = logic_module( + "sky130_fd_sc_hdll__dlrtp_2", + "High Density Low Leakage", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_4 = logic_module( + "sky130_fd_sc_hdll__dlrtp_4", + "High Density Low Leakage", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_1 = logic_module( + "sky130_fd_sc_hdll__dlxtn_1", + "High Density Low Leakage", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_2 = logic_module( + "sky130_fd_sc_hdll__dlxtn_2", + "High Density Low Leakage", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_4 = logic_module( + "sky130_fd_sc_hdll__dlxtn_4", + "High Density Low Leakage", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlygate4sd1_1 = logic_module( + "sky130_fd_sc_hdll__dlygate4sd1_1", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4sd2_1 = logic_module( + "sky130_fd_sc_hdll__dlygate4sd2_1", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4sd3_1 = logic_module( + "sky130_fd_sc_hdll__dlygate4sd3_1", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +ebufn_1 = logic_module( + "sky130_fd_sc_hdll__ebufn_1", + "High Density Low Leakage", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_2 = logic_module( + "sky130_fd_sc_hdll__ebufn_2", + "High Density Low Leakage", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_4 = logic_module( + "sky130_fd_sc_hdll__ebufn_4", + "High Density Low Leakage", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_8 = logic_module( + "sky130_fd_sc_hdll__ebufn_8", + "High Density Low Leakage", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_1 = logic_module( + "sky130_fd_sc_hdll__einvn_1", + "High Density Low Leakage", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_2 = logic_module( + "sky130_fd_sc_hdll__einvn_2", + "High Density Low Leakage", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_4 = logic_module( + "sky130_fd_sc_hdll__einvn_4", + "High Density Low Leakage", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_8 = logic_module( + "sky130_fd_sc_hdll__einvn_8", + "High Density Low Leakage", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_1 = logic_module( + "sky130_fd_sc_hdll__einvp_1", + "High Density Low Leakage", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_2 = logic_module( + "sky130_fd_sc_hdll__einvp_2", + "High Density Low Leakage", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_4 = logic_module( + "sky130_fd_sc_hdll__einvp_4", + "High Density Low Leakage", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_8 = logic_module( + "sky130_fd_sc_hdll__einvp_8", + "High Density Low Leakage", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +fill_1 = logic_module( + "sky130_fd_sc_hdll__fill_1", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR"], +) +fill_2 = logic_module( + "sky130_fd_sc_hdll__fill_2", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR"], +) +fill_4 = logic_module( + "sky130_fd_sc_hdll__fill_4", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR"], +) +fill_8 = logic_module( + "sky130_fd_sc_hdll__fill_8", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR"], +) +inputiso0n_1 = logic_module( + "sky130_fd_sc_hdll__inputiso0n_1", + "High Density Low Leakage", + ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +inputiso0p_1 = logic_module( + "sky130_fd_sc_hdll__inputiso0p_1", + "High Density Low Leakage", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +inputiso1n_1 = logic_module( + "sky130_fd_sc_hdll__inputiso1n_1", + "High Density Low Leakage", + ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +inputiso1p_1 = logic_module( + "sky130_fd_sc_hdll__inputiso1p_1", + "High Density Low Leakage", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +inv_1 = logic_module( + "sky130_fd_sc_hdll__inv_1", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_2 = logic_module( + "sky130_fd_sc_hdll__inv_2", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_4 = logic_module( + "sky130_fd_sc_hdll__inv_4", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_6 = logic_module( + "sky130_fd_sc_hdll__inv_6", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_8 = logic_module( + "sky130_fd_sc_hdll__inv_8", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_12 = logic_module( + "sky130_fd_sc_hdll__inv_12", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_16 = logic_module( + "sky130_fd_sc_hdll__inv_16", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +isobufsrc_1 = logic_module( + "sky130_fd_sc_hdll__isobufsrc_1", + "High Density Low Leakage", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +isobufsrc_2 = logic_module( + "sky130_fd_sc_hdll__isobufsrc_2", + "High Density Low Leakage", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +isobufsrc_4 = logic_module( + "sky130_fd_sc_hdll__isobufsrc_4", + "High Density Low Leakage", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +isobufsrc_8 = logic_module( + "sky130_fd_sc_hdll__isobufsrc_8", + "High Density Low Leakage", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +isobufsrc_16 = logic_module( + "sky130_fd_sc_hdll__isobufsrc_16", + "High Density Low Leakage", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_1 = logic_module( + "sky130_fd_sc_hdll__mux2_1", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_2 = logic_module( + "sky130_fd_sc_hdll__mux2_2", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_4 = logic_module( + "sky130_fd_sc_hdll__mux2_4", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_8 = logic_module( + "sky130_fd_sc_hdll__mux2_8", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_12 = logic_module( + "sky130_fd_sc_hdll__mux2_12", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_16 = logic_module( + "sky130_fd_sc_hdll__mux2_16", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2i_1 = logic_module( + "sky130_fd_sc_hdll__mux2i_1", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_2 = logic_module( + "sky130_fd_sc_hdll__mux2i_2", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_4 = logic_module( + "sky130_fd_sc_hdll__mux2i_4", + "High Density Low Leakage", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +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"], +) +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"], +) +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"], +) +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]"], +) +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]"], +) +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]"], +) +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]"], +) +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]"], +) +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]"], +) +nand2_1 = logic_module( + "sky130_fd_sc_hdll__nand2_1", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_2 = logic_module( + "sky130_fd_sc_hdll__nand2_2", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_4 = logic_module( + "sky130_fd_sc_hdll__nand2_4", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_6 = logic_module( + "sky130_fd_sc_hdll__nand2_6", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_8 = logic_module( + "sky130_fd_sc_hdll__nand2_8", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_12 = logic_module( + "sky130_fd_sc_hdll__nand2_12", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_16 = logic_module( + "sky130_fd_sc_hdll__nand2_16", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_1 = logic_module( + "sky130_fd_sc_hdll__nand2b_1", + "High Density Low Leakage", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_2 = logic_module( + "sky130_fd_sc_hdll__nand2b_2", + "High Density Low Leakage", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_4 = logic_module( + "sky130_fd_sc_hdll__nand2b_4", + "High Density Low Leakage", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_1 = logic_module( + "sky130_fd_sc_hdll__nand3_1", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_2 = logic_module( + "sky130_fd_sc_hdll__nand3_2", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_4 = logic_module( + "sky130_fd_sc_hdll__nand3_4", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_1 = logic_module( + "sky130_fd_sc_hdll__nand3b_1", + "High Density Low Leakage", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_2 = logic_module( + "sky130_fd_sc_hdll__nand3b_2", + "High Density Low Leakage", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_4 = logic_module( + "sky130_fd_sc_hdll__nand3b_4", + "High Density Low Leakage", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_1 = logic_module( + "sky130_fd_sc_hdll__nand4_1", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_2 = logic_module( + "sky130_fd_sc_hdll__nand4_2", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_4 = logic_module( + "sky130_fd_sc_hdll__nand4_4", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_1 = logic_module( + "sky130_fd_sc_hdll__nand4b_1", + "High Density Low Leakage", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_2 = logic_module( + "sky130_fd_sc_hdll__nand4b_2", + "High Density Low Leakage", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_4 = logic_module( + "sky130_fd_sc_hdll__nand4b_4", + "High Density Low Leakage", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +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"], +) +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"], +) +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"], +) +nor2_1 = logic_module( + "sky130_fd_sc_hdll__nor2_1", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_2 = logic_module( + "sky130_fd_sc_hdll__nor2_2", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_4 = logic_module( + "sky130_fd_sc_hdll__nor2_4", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_8 = logic_module( + "sky130_fd_sc_hdll__nor2_8", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_1 = logic_module( + "sky130_fd_sc_hdll__nor2b_1", + "High Density Low Leakage", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_2 = logic_module( + "sky130_fd_sc_hdll__nor2b_2", + "High Density Low Leakage", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_4 = logic_module( + "sky130_fd_sc_hdll__nor2b_4", + "High Density Low Leakage", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_1 = logic_module( + "sky130_fd_sc_hdll__nor3_1", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_2 = logic_module( + "sky130_fd_sc_hdll__nor3_2", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_4 = logic_module( + "sky130_fd_sc_hdll__nor3_4", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_1 = logic_module( + "sky130_fd_sc_hdll__nor3b_1", + "High Density Low Leakage", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_2 = logic_module( + "sky130_fd_sc_hdll__nor3b_2", + "High Density Low Leakage", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_4 = logic_module( + "sky130_fd_sc_hdll__nor3b_4", + "High Density Low Leakage", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_1 = logic_module( + "sky130_fd_sc_hdll__nor4_1", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_2 = logic_module( + "sky130_fd_sc_hdll__nor4_2", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_4 = logic_module( + "sky130_fd_sc_hdll__nor4_4", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_6 = logic_module( + "sky130_fd_sc_hdll__nor4_6", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_8 = logic_module( + "sky130_fd_sc_hdll__nor4_8", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_1 = logic_module( + "sky130_fd_sc_hdll__nor4b_1", + "High Density Low Leakage", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_2 = logic_module( + "sky130_fd_sc_hdll__nor4b_2", + "High Density Low Leakage", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_4 = logic_module( + "sky130_fd_sc_hdll__nor4b_4", + "High Density Low Leakage", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +o21a_1 = logic_module( + "sky130_fd_sc_hdll__o21a_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_2 = logic_module( + "sky130_fd_sc_hdll__o21a_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_4 = logic_module( + "sky130_fd_sc_hdll__o21a_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ai_1 = logic_module( + "sky130_fd_sc_hdll__o21ai_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_2 = logic_module( + "sky130_fd_sc_hdll__o21ai_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_4 = logic_module( + "sky130_fd_sc_hdll__o21ai_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ba_1 = logic_module( + "sky130_fd_sc_hdll__o21ba_1", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_2 = logic_module( + "sky130_fd_sc_hdll__o21ba_2", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_4 = logic_module( + "sky130_fd_sc_hdll__o21ba_4", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21bai_1 = logic_module( + "sky130_fd_sc_hdll__o21bai_1", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_2 = logic_module( + "sky130_fd_sc_hdll__o21bai_2", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_4 = logic_module( + "sky130_fd_sc_hdll__o21bai_4", + "High Density Low Leakage", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22a_1 = logic_module( + "sky130_fd_sc_hdll__o22a_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_2 = logic_module( + "sky130_fd_sc_hdll__o22a_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_4 = logic_module( + "sky130_fd_sc_hdll__o22a_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22ai_1 = logic_module( + "sky130_fd_sc_hdll__o22ai_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_2 = logic_module( + "sky130_fd_sc_hdll__o22ai_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_4 = logic_module( + "sky130_fd_sc_hdll__o22ai_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_1 = logic_module( + "sky130_fd_sc_hdll__o31ai_1", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_2 = logic_module( + "sky130_fd_sc_hdll__o31ai_2", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_4 = logic_module( + "sky130_fd_sc_hdll__o31ai_4", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_1 = logic_module( + "sky130_fd_sc_hdll__o32ai_1", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_2 = logic_module( + "sky130_fd_sc_hdll__o32ai_2", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_4 = logic_module( + "sky130_fd_sc_hdll__o32ai_4", + "High Density Low Leakage", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211a_1 = logic_module( + "sky130_fd_sc_hdll__o211a_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_2 = logic_module( + "sky130_fd_sc_hdll__o211a_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_4 = logic_module( + "sky130_fd_sc_hdll__o211a_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211ai_1 = logic_module( + "sky130_fd_sc_hdll__o211ai_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_2 = logic_module( + "sky130_fd_sc_hdll__o211ai_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_4 = logic_module( + "sky130_fd_sc_hdll__o211ai_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221a_1 = logic_module( + "sky130_fd_sc_hdll__o221a_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_2 = logic_module( + "sky130_fd_sc_hdll__o221a_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_4 = logic_module( + "sky130_fd_sc_hdll__o221a_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221ai_1 = logic_module( + "sky130_fd_sc_hdll__o221ai_1", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_2 = logic_module( + "sky130_fd_sc_hdll__o221ai_2", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_4 = logic_module( + "sky130_fd_sc_hdll__o221ai_4", + "High Density Low Leakage", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +or2_1 = logic_module( + "sky130_fd_sc_hdll__or2_1", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_2 = logic_module( + "sky130_fd_sc_hdll__or2_2", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_4 = logic_module( + "sky130_fd_sc_hdll__or2_4", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_6 = logic_module( + "sky130_fd_sc_hdll__or2_6", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_8 = logic_module( + "sky130_fd_sc_hdll__or2_8", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_1 = logic_module( + "sky130_fd_sc_hdll__or2b_1", + "High Density Low Leakage", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_2 = logic_module( + "sky130_fd_sc_hdll__or2b_2", + "High Density Low Leakage", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_4 = logic_module( + "sky130_fd_sc_hdll__or2b_4", + "High Density Low Leakage", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_1 = logic_module( + "sky130_fd_sc_hdll__or3_1", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_2 = logic_module( + "sky130_fd_sc_hdll__or3_2", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_4 = logic_module( + "sky130_fd_sc_hdll__or3_4", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_1 = logic_module( + "sky130_fd_sc_hdll__or3b_1", + "High Density Low Leakage", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_2 = logic_module( + "sky130_fd_sc_hdll__or3b_2", + "High Density Low Leakage", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_4 = logic_module( + "sky130_fd_sc_hdll__or3b_4", + "High Density Low Leakage", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_1 = logic_module( + "sky130_fd_sc_hdll__or4_1", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_2 = logic_module( + "sky130_fd_sc_hdll__or4_2", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_4 = logic_module( + "sky130_fd_sc_hdll__or4_4", + "High Density Low Leakage", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_1 = logic_module( + "sky130_fd_sc_hdll__or4b_1", + "High Density Low Leakage", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_2 = logic_module( + "sky130_fd_sc_hdll__or4b_2", + "High Density Low Leakage", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_4 = logic_module( + "sky130_fd_sc_hdll__or4b_4", + "High Density Low Leakage", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +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"], +) +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"], +) +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"], +) +probe_p_8 = logic_module( + "sky130_fd_sc_hdll__probe_p_8", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +probec_p_8 = logic_module( + "sky130_fd_sc_hdll__probec_p_8", + "High Density Low Leakage", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +sdfxtp_1 = logic_module( + "sky130_fd_sc_hdll__sdfxtp_1", + "High Density Low Leakage", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_2 = logic_module( + "sky130_fd_sc_hdll__sdfxtp_2", + "High Density Low Leakage", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_4 = logic_module( + "sky130_fd_sc_hdll__sdfxtp_4", + "High Density Low Leakage", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdlclkp_1 = logic_module( + "sky130_fd_sc_hdll__sdlclkp_1", + "High Density Low Leakage", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_2 = logic_module( + "sky130_fd_sc_hdll__sdlclkp_2", + "High Density Low Leakage", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_4 = logic_module( + "sky130_fd_sc_hdll__sdlclkp_4", + "High Density Low Leakage", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +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"], +) +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"], +) +tap = logic_module("tap", "High Density Low Leakage", ["VGND", "VPWR"]) +tap_1 = logic_module( + "sky130_fd_sc_hdll__tap_1", + "High Density Low Leakage", + ["VGND", "VNB", "VPB", "VPWR"], +) +tapvgnd2_1 = logic_module( + "sky130_fd_sc_hdll__tapvgnd2_1", + "High Density Low Leakage", + ["VGND", "VPB", "VPWR"], +) +tapvgnd_1 = logic_module( + "sky130_fd_sc_hdll__tapvgnd_1", + "High Density Low Leakage", + ["VGND", "VPB", "VPWR"], +) +tapvpwrvgnd_1 = logic_module( + "sky130_fd_sc_hdll__tapvpwrvgnd_1", "High Density Low Leakage", ["VGND", "VPWR"] +) +xnor2_1 = logic_module( + "sky130_fd_sc_hdll__xnor2_1", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_2 = logic_module( + "sky130_fd_sc_hdll__xnor2_2", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_4 = logic_module( + "sky130_fd_sc_hdll__xnor2_4", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor3_1 = logic_module( + "sky130_fd_sc_hdll__xnor3_1", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_2 = logic_module( + "sky130_fd_sc_hdll__xnor3_2", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_4 = logic_module( + "sky130_fd_sc_hdll__xnor3_4", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_1 = logic_module( + "sky130_fd_sc_hdll__xor2_1", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_2 = logic_module( + "sky130_fd_sc_hdll__xor2_2", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_4 = logic_module( + "sky130_fd_sc_hdll__xor2_4", + "High Density Low Leakage", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_1 = logic_module( + "sky130_fd_sc_hdll__xor3_1", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_2 = logic_module( + "sky130_fd_sc_hdll__xor3_2", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_4 = logic_module( + "sky130_fd_sc_hdll__xor3_4", + "High Density Low Leakage", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) diff --git a/sky130/hdl21/sky130_gf/digital_cells/low_power.py b/sky130/hdl21/sky130_gf/digital_cells/low_power.py new file mode 100644 index 000000000..1c61a11b5 --- /dev/null +++ b/sky130/hdl21/sky130_gf/digital_cells/low_power.py @@ -0,0 +1,3636 @@ +from ..pdk_data import logic_module + +a2bb2o_0 = logic_module( + "sky130_fd_sc_lp__a2bb2o_0", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_1 = logic_module( + "sky130_fd_sc_lp__a2bb2o_1", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_2 = logic_module( + "sky130_fd_sc_lp__a2bb2o_2", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_4 = logic_module( + "sky130_fd_sc_lp__a2bb2o_4", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_lp = logic_module( + "sky130_fd_sc_lp__a2bb2o_lp", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_m = logic_module( + "sky130_fd_sc_lp__a2bb2o_m", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2oi_0 = logic_module( + "sky130_fd_sc_lp__a2bb2oi_0", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_1 = logic_module( + "sky130_fd_sc_lp__a2bb2oi_1", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_2 = logic_module( + "sky130_fd_sc_lp__a2bb2oi_2", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_4 = logic_module( + "sky130_fd_sc_lp__a2bb2oi_4", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_lp = logic_module( + "sky130_fd_sc_lp__a2bb2oi_lp", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_m = logic_module( + "sky130_fd_sc_lp__a2bb2oi_m", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21bo_0 = logic_module( + "sky130_fd_sc_lp__a21bo_0", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_1 = logic_module( + "sky130_fd_sc_lp__a21bo_1", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_2 = logic_module( + "sky130_fd_sc_lp__a21bo_2", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_4 = logic_module( + "sky130_fd_sc_lp__a21bo_4", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_lp = logic_module( + "sky130_fd_sc_lp__a21bo_lp", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_m = logic_module( + "sky130_fd_sc_lp__a21bo_m", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21boi_0 = logic_module( + "sky130_fd_sc_lp__a21boi_0", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_1 = logic_module( + "sky130_fd_sc_lp__a21boi_1", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_2 = logic_module( + "sky130_fd_sc_lp__a21boi_2", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_4 = logic_module( + "sky130_fd_sc_lp__a21boi_4", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_lp = logic_module( + "sky130_fd_sc_lp__a21boi_lp", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_m = logic_module( + "sky130_fd_sc_lp__a21boi_m", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21o_0 = logic_module( + "sky130_fd_sc_lp__a21o_0", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_1 = logic_module( + "sky130_fd_sc_lp__a21o_1", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_2 = logic_module( + "sky130_fd_sc_lp__a21o_2", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_4 = logic_module( + "sky130_fd_sc_lp__a21o_4", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_lp = logic_module( + "sky130_fd_sc_lp__a21o_lp", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_m = logic_module( + "sky130_fd_sc_lp__a21o_m", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21oi_0 = logic_module( + "sky130_fd_sc_lp__a21oi_0", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_1 = logic_module( + "sky130_fd_sc_lp__a21oi_1", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_2 = logic_module( + "sky130_fd_sc_lp__a21oi_2", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_4 = logic_module( + "sky130_fd_sc_lp__a21oi_4", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_lp = logic_module( + "sky130_fd_sc_lp__a21oi_lp", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_m = logic_module( + "sky130_fd_sc_lp__a21oi_m", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22o_0 = logic_module( + "sky130_fd_sc_lp__a22o_0", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_1 = logic_module( + "sky130_fd_sc_lp__a22o_1", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_2 = logic_module( + "sky130_fd_sc_lp__a22o_2", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_4 = logic_module( + "sky130_fd_sc_lp__a22o_4", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_lp = logic_module( + "sky130_fd_sc_lp__a22o_lp", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_m = logic_module( + "sky130_fd_sc_lp__a22o_m", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22oi_0 = logic_module( + "sky130_fd_sc_lp__a22oi_0", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_1 = logic_module( + "sky130_fd_sc_lp__a22oi_1", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_2 = logic_module( + "sky130_fd_sc_lp__a22oi_2", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_4 = logic_module( + "sky130_fd_sc_lp__a22oi_4", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_lp = logic_module( + "sky130_fd_sc_lp__a22oi_lp", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_m = logic_module( + "sky130_fd_sc_lp__a22oi_m", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31o_0 = logic_module( + "sky130_fd_sc_lp__a31o_0", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_1 = logic_module( + "sky130_fd_sc_lp__a31o_1", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_2 = logic_module( + "sky130_fd_sc_lp__a31o_2", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_4 = logic_module( + "sky130_fd_sc_lp__a31o_4", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_lp = logic_module( + "sky130_fd_sc_lp__a31o_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_m = logic_module( + "sky130_fd_sc_lp__a31o_m", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31oi_0 = logic_module( + "sky130_fd_sc_lp__a31oi_0", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_1 = logic_module( + "sky130_fd_sc_lp__a31oi_1", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_2 = logic_module( + "sky130_fd_sc_lp__a31oi_2", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_4 = logic_module( + "sky130_fd_sc_lp__a31oi_4", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_lp = logic_module( + "sky130_fd_sc_lp__a31oi_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_m = logic_module( + "sky130_fd_sc_lp__a31oi_m", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32o_0 = logic_module( + "sky130_fd_sc_lp__a32o_0", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_1 = logic_module( + "sky130_fd_sc_lp__a32o_1", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_2 = logic_module( + "sky130_fd_sc_lp__a32o_2", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_4 = logic_module( + "sky130_fd_sc_lp__a32o_4", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_lp = logic_module( + "sky130_fd_sc_lp__a32o_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_m = logic_module( + "sky130_fd_sc_lp__a32o_m", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32oi_0 = logic_module( + "sky130_fd_sc_lp__a32oi_0", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_1 = logic_module( + "sky130_fd_sc_lp__a32oi_1", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_2 = logic_module( + "sky130_fd_sc_lp__a32oi_2", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_4 = logic_module( + "sky130_fd_sc_lp__a32oi_4", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_lp = logic_module( + "sky130_fd_sc_lp__a32oi_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_m = logic_module( + "sky130_fd_sc_lp__a32oi_m", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41o_0 = logic_module( + "sky130_fd_sc_lp__a41o_0", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_1 = logic_module( + "sky130_fd_sc_lp__a41o_1", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_2 = logic_module( + "sky130_fd_sc_lp__a41o_2", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_4 = logic_module( + "sky130_fd_sc_lp__a41o_4", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_lp = logic_module( + "sky130_fd_sc_lp__a41o_lp", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_m = logic_module( + "sky130_fd_sc_lp__a41o_m", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41oi_0 = logic_module( + "sky130_fd_sc_lp__a41oi_0", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_1 = logic_module( + "sky130_fd_sc_lp__a41oi_1", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_2 = logic_module( + "sky130_fd_sc_lp__a41oi_2", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_4 = logic_module( + "sky130_fd_sc_lp__a41oi_4", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_lp = logic_module( + "sky130_fd_sc_lp__a41oi_lp", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_m = logic_module( + "sky130_fd_sc_lp__a41oi_m", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211o_0 = logic_module( + "sky130_fd_sc_lp__a211o_0", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_1 = logic_module( + "sky130_fd_sc_lp__a211o_1", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_2 = logic_module( + "sky130_fd_sc_lp__a211o_2", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_4 = logic_module( + "sky130_fd_sc_lp__a211o_4", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_lp = logic_module( + "sky130_fd_sc_lp__a211o_lp", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_m = logic_module( + "sky130_fd_sc_lp__a211o_m", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211oi_0 = logic_module( + "sky130_fd_sc_lp__a211oi_0", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_1 = logic_module( + "sky130_fd_sc_lp__a211oi_1", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_2 = logic_module( + "sky130_fd_sc_lp__a211oi_2", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_4 = logic_module( + "sky130_fd_sc_lp__a211oi_4", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_lp = logic_module( + "sky130_fd_sc_lp__a211oi_lp", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_m = logic_module( + "sky130_fd_sc_lp__a211oi_m", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221o_0 = logic_module( + "sky130_fd_sc_lp__a221o_0", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_1 = logic_module( + "sky130_fd_sc_lp__a221o_1", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_2 = logic_module( + "sky130_fd_sc_lp__a221o_2", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_4 = logic_module( + "sky130_fd_sc_lp__a221o_4", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_lp = logic_module( + "sky130_fd_sc_lp__a221o_lp", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_m = logic_module( + "sky130_fd_sc_lp__a221o_m", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221oi_0 = logic_module( + "sky130_fd_sc_lp__a221oi_0", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_1 = logic_module( + "sky130_fd_sc_lp__a221oi_1", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_2 = logic_module( + "sky130_fd_sc_lp__a221oi_2", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_4 = logic_module( + "sky130_fd_sc_lp__a221oi_4", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_lp = logic_module( + "sky130_fd_sc_lp__a221oi_lp", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_m = logic_module( + "sky130_fd_sc_lp__a221oi_m", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311o_0 = logic_module( + "sky130_fd_sc_lp__a311o_0", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_1 = logic_module( + "sky130_fd_sc_lp__a311o_1", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_2 = logic_module( + "sky130_fd_sc_lp__a311o_2", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_4 = logic_module( + "sky130_fd_sc_lp__a311o_4", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_lp = logic_module( + "sky130_fd_sc_lp__a311o_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_m = logic_module( + "sky130_fd_sc_lp__a311o_m", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311oi_0 = logic_module( + "sky130_fd_sc_lp__a311oi_0", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_1 = logic_module( + "sky130_fd_sc_lp__a311oi_1", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_2 = logic_module( + "sky130_fd_sc_lp__a311oi_2", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_4 = logic_module( + "sky130_fd_sc_lp__a311oi_4", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_lp = logic_module( + "sky130_fd_sc_lp__a311oi_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_m = logic_module( + "sky130_fd_sc_lp__a311oi_m", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111o_0 = logic_module( + "sky130_fd_sc_lp__a2111o_0", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_1 = logic_module( + "sky130_fd_sc_lp__a2111o_1", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_2 = logic_module( + "sky130_fd_sc_lp__a2111o_2", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_4 = logic_module( + "sky130_fd_sc_lp__a2111o_4", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_lp = logic_module( + "sky130_fd_sc_lp__a2111o_lp", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_m = logic_module( + "sky130_fd_sc_lp__a2111o_m", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111oi_0 = logic_module( + "sky130_fd_sc_lp__a2111oi_0", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_1 = logic_module( + "sky130_fd_sc_lp__a2111oi_1", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_2 = logic_module( + "sky130_fd_sc_lp__a2111oi_2", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_4 = logic_module( + "sky130_fd_sc_lp__a2111oi_4", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_lp = logic_module( + "sky130_fd_sc_lp__a2111oi_lp", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_m = logic_module( + "sky130_fd_sc_lp__a2111oi_m", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +and2_0 = logic_module( + "sky130_fd_sc_lp__and2_0", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_1 = logic_module( + "sky130_fd_sc_lp__and2_1", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_2 = logic_module( + "sky130_fd_sc_lp__and2_2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_4 = logic_module( + "sky130_fd_sc_lp__and2_4", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_lp2 = logic_module( + "sky130_fd_sc_lp__and2_lp2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_lp = logic_module( + "sky130_fd_sc_lp__and2_lp", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_m = logic_module( + "sky130_fd_sc_lp__and2_m", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_1 = logic_module( + "sky130_fd_sc_lp__and2b_1", + "Low Power", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_2 = logic_module( + "sky130_fd_sc_lp__and2b_2", + "Low Power", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_4 = logic_module( + "sky130_fd_sc_lp__and2b_4", + "Low Power", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_lp = logic_module( + "sky130_fd_sc_lp__and2b_lp", + "Low Power", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_m = logic_module( + "sky130_fd_sc_lp__and2b_m", + "Low Power", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_0 = logic_module( + "sky130_fd_sc_lp__and3_0", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_1 = logic_module( + "sky130_fd_sc_lp__and3_1", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_2 = logic_module( + "sky130_fd_sc_lp__and3_2", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_4 = logic_module( + "sky130_fd_sc_lp__and3_4", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_lp = logic_module( + "sky130_fd_sc_lp__and3_lp", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_m = logic_module( + "sky130_fd_sc_lp__and3_m", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_1 = logic_module( + "sky130_fd_sc_lp__and3b_1", + "Low Power", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_2 = logic_module( + "sky130_fd_sc_lp__and3b_2", + "Low Power", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_4 = logic_module( + "sky130_fd_sc_lp__and3b_4", + "Low Power", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_lp = logic_module( + "sky130_fd_sc_lp__and3b_lp", + "Low Power", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_m = logic_module( + "sky130_fd_sc_lp__and3b_m", + "Low Power", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_0 = logic_module( + "sky130_fd_sc_lp__and4_0", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_1 = logic_module( + "sky130_fd_sc_lp__and4_1", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_2 = logic_module( + "sky130_fd_sc_lp__and4_2", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_4 = logic_module( + "sky130_fd_sc_lp__and4_4", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_lp2 = logic_module( + "sky130_fd_sc_lp__and4_lp2", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_lp = logic_module( + "sky130_fd_sc_lp__and4_lp", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_m = logic_module( + "sky130_fd_sc_lp__and4_m", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_1 = logic_module( + "sky130_fd_sc_lp__and4b_1", + "Low Power", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_2 = logic_module( + "sky130_fd_sc_lp__and4b_2", + "Low Power", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_4 = logic_module( + "sky130_fd_sc_lp__and4b_4", + "Low Power", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_lp = logic_module( + "sky130_fd_sc_lp__and4b_lp", + "Low Power", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_m = logic_module( + "sky130_fd_sc_lp__and4b_m", + "Low Power", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_1 = logic_module( + "sky130_fd_sc_lp__and4bb_1", + "Low Power", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_2 = logic_module( + "sky130_fd_sc_lp__and4bb_2", + "Low Power", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_4 = logic_module( + "sky130_fd_sc_lp__and4bb_4", + "Low Power", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_lp = logic_module( + "sky130_fd_sc_lp__and4bb_lp", + "Low Power", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_m = logic_module( + "sky130_fd_sc_lp__and4bb_m", + "Low Power", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_0 = logic_module( + "sky130_fd_sc_lp__buf_0", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_1 = logic_module( + "sky130_fd_sc_lp__buf_1", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_2 = logic_module( + "sky130_fd_sc_lp__buf_2", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_4 = logic_module( + "sky130_fd_sc_lp__buf_4", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_8 = logic_module( + "sky130_fd_sc_lp__buf_8", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_16 = logic_module( + "sky130_fd_sc_lp__buf_16", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_lp = logic_module( + "sky130_fd_sc_lp__buf_lp", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_m = logic_module( + "sky130_fd_sc_lp__buf_m", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +bufbuf_8 = logic_module( + "sky130_fd_sc_lp__bufbuf_8", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufbuf_16 = logic_module( + "sky130_fd_sc_lp__bufbuf_16", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufinv_8 = logic_module( + "sky130_fd_sc_lp__bufinv_8", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +bufinv_16 = logic_module( + "sky130_fd_sc_lp__bufinv_16", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +bufkapwr_1 = logic_module( + "sky130_fd_sc_lp__bufkapwr_1", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufkapwr_2 = logic_module( + "sky130_fd_sc_lp__bufkapwr_2", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufkapwr_4 = logic_module( + "sky130_fd_sc_lp__bufkapwr_4", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufkapwr_8 = logic_module( + "sky130_fd_sc_lp__bufkapwr_8", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buflp_0 = logic_module( + "sky130_fd_sc_lp__buflp_0", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buflp_1 = logic_module( + "sky130_fd_sc_lp__buflp_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buflp_2 = logic_module( + "sky130_fd_sc_lp__buflp_2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buflp_4 = logic_module( + "sky130_fd_sc_lp__buflp_4", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buflp_8 = logic_module( + "sky130_fd_sc_lp__buflp_8", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buflp_m = logic_module( + "sky130_fd_sc_lp__buflp_m", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +busdriver2_20 = logic_module( + "sky130_fd_sc_lp__busdriver2_20", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +busdriver_20 = logic_module( + "sky130_fd_sc_lp__busdriver_20", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +busdrivernovlp2_20 = logic_module( + "sky130_fd_sc_lp__busdrivernovlp2_20", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +busdrivernovlp_20 = logic_module( + "sky130_fd_sc_lp__busdrivernovlp_20", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +busdrivernovlpsleep_20 = logic_module( + "sky130_fd_sc_lp__busdrivernovlpsleep_20", + "Low Power", + ["A", "SLEEP", "TE_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +bushold0_1 = logic_module( + "sky130_fd_sc_lp__bushold0_1", + "Low Power", + ["RESET", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bushold_1 = logic_module( + "sky130_fd_sc_lp__bushold_1", + "Low Power", + ["RESET", "VGND", "VNB", "VPB", "VPWR", "X"], +) +busreceiver_0 = logic_module( + "sky130_fd_sc_lp__busreceiver_0", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +busreceiver_1 = logic_module( + "sky130_fd_sc_lp__busreceiver_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +busreceiver_m = logic_module( + "sky130_fd_sc_lp__busreceiver_m", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_0 = logic_module( + "sky130_fd_sc_lp__clkbuf_0", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_1 = logic_module( + "sky130_fd_sc_lp__clkbuf_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_2 = logic_module( + "sky130_fd_sc_lp__clkbuf_2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_4 = logic_module( + "sky130_fd_sc_lp__clkbuf_4", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_8 = logic_module( + "sky130_fd_sc_lp__clkbuf_8", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_16 = logic_module( + "sky130_fd_sc_lp__clkbuf_16", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_lp = logic_module( + "sky130_fd_sc_lp__clkbuf_lp", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuflp_2 = logic_module( + "sky130_fd_sc_lp__clkbuflp_2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuflp_4 = logic_module( + "sky130_fd_sc_lp__clkbuflp_4", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuflp_8 = logic_module( + "sky130_fd_sc_lp__clkbuflp_8", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuflp_16 = logic_module( + "sky130_fd_sc_lp__clkbuflp_16", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s15_1 = logic_module( + "sky130_fd_sc_lp__clkdlybuf4s15_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s15_2 = logic_module( + "sky130_fd_sc_lp__clkdlybuf4s15_2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s18_1 = logic_module( + "sky130_fd_sc_lp__clkdlybuf4s18_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s18_2 = logic_module( + "sky130_fd_sc_lp__clkdlybuf4s18_2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s25_1 = logic_module( + "sky130_fd_sc_lp__clkdlybuf4s25_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s25_2 = logic_module( + "sky130_fd_sc_lp__clkdlybuf4s25_2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s50_1 = logic_module( + "sky130_fd_sc_lp__clkdlybuf4s50_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlybuf4s50_2 = logic_module( + "sky130_fd_sc_lp__clkdlybuf4s50_2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkinv_0 = logic_module( + "sky130_fd_sc_lp__clkinv_0", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_1 = logic_module( + "sky130_fd_sc_lp__clkinv_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_2 = logic_module( + "sky130_fd_sc_lp__clkinv_2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_4 = logic_module( + "sky130_fd_sc_lp__clkinv_4", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_8 = logic_module( + "sky130_fd_sc_lp__clkinv_8", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_16 = logic_module( + "sky130_fd_sc_lp__clkinv_16", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_lp2 = logic_module( + "sky130_fd_sc_lp__clkinv_lp2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_lp = logic_module( + "sky130_fd_sc_lp__clkinv_lp", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinvlp_2 = logic_module( + "sky130_fd_sc_lp__clkinvlp_2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinvlp_4 = logic_module( + "sky130_fd_sc_lp__clkinvlp_4", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinvlp_8 = logic_module( + "sky130_fd_sc_lp__clkinvlp_8", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinvlp_16 = logic_module( + "sky130_fd_sc_lp__clkinvlp_16", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +conb_0 = logic_module( + "sky130_fd_sc_lp__conb_0", + "Low Power", + ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], +) +conb_1 = logic_module( + "sky130_fd_sc_lp__conb_1", + "Low Power", + ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], +) +decap_3 = logic_module( + "sky130_fd_sc_lp__decap_3", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_4 = logic_module( + "sky130_fd_sc_lp__decap_4", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_6 = logic_module( + "sky130_fd_sc_lp__decap_6", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_8 = logic_module( + "sky130_fd_sc_lp__decap_8", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_12 = logic_module( + "sky130_fd_sc_lp__decap_12", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +decapkapwr_3 = logic_module( + "sky130_fd_sc_lp__decapkapwr_3", + "Low Power", + ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +decapkapwr_4 = logic_module( + "sky130_fd_sc_lp__decapkapwr_4", + "Low Power", + ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +decapkapwr_6 = logic_module( + "sky130_fd_sc_lp__decapkapwr_6", + "Low Power", + ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +decapkapwr_8 = logic_module( + "sky130_fd_sc_lp__decapkapwr_8", + "Low Power", + ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +decapkapwr_12 = logic_module( + "sky130_fd_sc_lp__decapkapwr_12", + "Low Power", + ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +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"], +) +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"], +) +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"], +) +dfrbp_1 = logic_module( + "sky130_fd_sc_lp__dfrbp_1", + "Low Power", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrbp_2 = logic_module( + "sky130_fd_sc_lp__dfrbp_2", + "Low Power", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrbp_lp = logic_module( + "sky130_fd_sc_lp__dfrbp_lp", + "Low Power", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrtn_1 = logic_module( + "sky130_fd_sc_lp__dfrtn_1", + "Low Power", + ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_1 = logic_module( + "sky130_fd_sc_lp__dfrtp_1", + "Low Power", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_2 = logic_module( + "sky130_fd_sc_lp__dfrtp_2", + "Low Power", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_4 = logic_module( + "sky130_fd_sc_lp__dfrtp_4", + "Low Power", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfsbp_1 = logic_module( + "sky130_fd_sc_lp__dfsbp_1", + "Low Power", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfsbp_2 = logic_module( + "sky130_fd_sc_lp__dfsbp_2", + "Low Power", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfsbp_lp = logic_module( + "sky130_fd_sc_lp__dfsbp_lp", + "Low Power", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfstp_1 = logic_module( + "sky130_fd_sc_lp__dfstp_1", + "Low Power", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_2 = logic_module( + "sky130_fd_sc_lp__dfstp_2", + "Low Power", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_4 = logic_module( + "sky130_fd_sc_lp__dfstp_4", + "Low Power", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_lp = logic_module( + "sky130_fd_sc_lp__dfstp_lp", + "Low Power", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxbp_1 = logic_module( + "sky130_fd_sc_lp__dfxbp_1", + "Low Power", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxbp_2 = logic_module( + "sky130_fd_sc_lp__dfxbp_2", + "Low Power", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxbp_lp = logic_module( + "sky130_fd_sc_lp__dfxbp_lp", + "Low Power", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxtp_1 = logic_module( + "sky130_fd_sc_lp__dfxtp_1", + "Low Power", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_2 = logic_module( + "sky130_fd_sc_lp__dfxtp_2", + "Low Power", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_4 = logic_module( + "sky130_fd_sc_lp__dfxtp_4", + "Low Power", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_lp = logic_module( + "sky130_fd_sc_lp__dfxtp_lp", + "Low Power", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +diode_0 = logic_module( + "sky130_fd_sc_lp__diode_0", "Low Power", ["DIODE", "VGND", "VNB", "VPB", "VPWR"] +) +diode_1 = logic_module( + "sky130_fd_sc_lp__diode_1", "Low Power", ["DIODE", "VGND", "VNB", "VPB", "VPWR"] +) +dlclkp_1 = logic_module( + "sky130_fd_sc_lp__dlclkp_1", + "Low Power", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_2 = logic_module( + "sky130_fd_sc_lp__dlclkp_2", + "Low Power", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_4 = logic_module( + "sky130_fd_sc_lp__dlclkp_4", + "Low Power", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_lp = logic_module( + "sky130_fd_sc_lp__dlclkp_lp", + "Low Power", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlrbn_1 = logic_module( + "sky130_fd_sc_lp__dlrbn_1", + "Low Power", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbn_2 = logic_module( + "sky130_fd_sc_lp__dlrbn_2", + "Low Power", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbn_lp = logic_module( + "sky130_fd_sc_lp__dlrbn_lp", + "Low Power", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_1 = logic_module( + "sky130_fd_sc_lp__dlrbp_1", + "Low Power", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_2 = logic_module( + "sky130_fd_sc_lp__dlrbp_2", + "Low Power", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_lp = logic_module( + "sky130_fd_sc_lp__dlrbp_lp", + "Low Power", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrtn_1 = logic_module( + "sky130_fd_sc_lp__dlrtn_1", + "Low Power", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_2 = logic_module( + "sky130_fd_sc_lp__dlrtn_2", + "Low Power", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_4 = logic_module( + "sky130_fd_sc_lp__dlrtn_4", + "Low Power", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_lp = logic_module( + "sky130_fd_sc_lp__dlrtn_lp", + "Low Power", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_1 = logic_module( + "sky130_fd_sc_lp__dlrtp_1", + "Low Power", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_2 = logic_module( + "sky130_fd_sc_lp__dlrtp_2", + "Low Power", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_4 = logic_module( + "sky130_fd_sc_lp__dlrtp_4", + "Low Power", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_lp2 = logic_module( + "sky130_fd_sc_lp__dlrtp_lp2", + "Low Power", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_lp = logic_module( + "sky130_fd_sc_lp__dlrtp_lp", + "Low Power", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxbn_1 = logic_module( + "sky130_fd_sc_lp__dlxbn_1", + "Low Power", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbn_2 = logic_module( + "sky130_fd_sc_lp__dlxbn_2", + "Low Power", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbp_1 = logic_module( + "sky130_fd_sc_lp__dlxbp_1", + "Low Power", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbp_lp2 = logic_module( + "sky130_fd_sc_lp__dlxbp_lp2", + "Low Power", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbp_lp = logic_module( + "sky130_fd_sc_lp__dlxbp_lp", + "Low Power", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxtn_1 = logic_module( + "sky130_fd_sc_lp__dlxtn_1", + "Low Power", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_2 = logic_module( + "sky130_fd_sc_lp__dlxtn_2", + "Low Power", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_4 = logic_module( + "sky130_fd_sc_lp__dlxtn_4", + "Low Power", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtp_1 = logic_module( + "sky130_fd_sc_lp__dlxtp_1", + "Low Power", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtp_lp2 = logic_module( + "sky130_fd_sc_lp__dlxtp_lp2", + "Low Power", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtp_lp = logic_module( + "sky130_fd_sc_lp__dlxtp_lp", + "Low Power", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlybuf4s15kapwr_1 = logic_module( + "sky130_fd_sc_lp__dlybuf4s15kapwr_1", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlybuf4s15kapwr_2 = logic_module( + "sky130_fd_sc_lp__dlybuf4s15kapwr_2", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlybuf4s18kapwr_1 = logic_module( + "sky130_fd_sc_lp__dlybuf4s18kapwr_1", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlybuf4s18kapwr_2 = logic_module( + "sky130_fd_sc_lp__dlybuf4s18kapwr_2", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlybuf4s25kapwr_1 = logic_module( + "sky130_fd_sc_lp__dlybuf4s25kapwr_1", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlybuf4s25kapwr_2 = logic_module( + "sky130_fd_sc_lp__dlybuf4s25kapwr_2", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlybuf4s50kapwr_1 = logic_module( + "sky130_fd_sc_lp__dlybuf4s50kapwr_1", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlybuf4s50kapwr_2 = logic_module( + "sky130_fd_sc_lp__dlybuf4s50kapwr_2", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4s15_1 = logic_module( + "sky130_fd_sc_lp__dlygate4s15_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4s18_1 = logic_module( + "sky130_fd_sc_lp__dlygate4s18_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4s50_1 = logic_module( + "sky130_fd_sc_lp__dlygate4s50_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s2s_1 = logic_module( + "sky130_fd_sc_lp__dlymetal6s2s_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s4s_1 = logic_module( + "sky130_fd_sc_lp__dlymetal6s4s_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s6s_1 = logic_module( + "sky130_fd_sc_lp__dlymetal6s6s_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +ebufn_1 = logic_module( + "sky130_fd_sc_lp__ebufn_1", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_2 = logic_module( + "sky130_fd_sc_lp__ebufn_2", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_4 = logic_module( + "sky130_fd_sc_lp__ebufn_4", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_8 = logic_module( + "sky130_fd_sc_lp__ebufn_8", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_lp2 = logic_module( + "sky130_fd_sc_lp__ebufn_lp2", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_lp = logic_module( + "sky130_fd_sc_lp__ebufn_lp", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +edfxbp_1 = logic_module( + "sky130_fd_sc_lp__edfxbp_1", + "Low Power", + ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +einvn_0 = logic_module( + "sky130_fd_sc_lp__einvn_0", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_1 = logic_module( + "sky130_fd_sc_lp__einvn_1", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_2 = logic_module( + "sky130_fd_sc_lp__einvn_2", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_4 = logic_module( + "sky130_fd_sc_lp__einvn_4", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_8 = logic_module( + "sky130_fd_sc_lp__einvn_8", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_lp = logic_module( + "sky130_fd_sc_lp__einvn_lp", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_m = logic_module( + "sky130_fd_sc_lp__einvn_m", + "Low Power", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_0 = logic_module( + "sky130_fd_sc_lp__einvp_0", + "Low Power", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_1 = logic_module( + "sky130_fd_sc_lp__einvp_1", + "Low Power", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_2 = logic_module( + "sky130_fd_sc_lp__einvp_2", + "Low Power", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_4 = logic_module( + "sky130_fd_sc_lp__einvp_4", + "Low Power", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_8 = logic_module( + "sky130_fd_sc_lp__einvp_8", + "Low Power", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_lp = logic_module( + "sky130_fd_sc_lp__einvp_lp", + "Low Power", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_m = logic_module( + "sky130_fd_sc_lp__einvp_m", + "Low Power", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +fa_0 = logic_module( + "sky130_fd_sc_lp__fa_0", + "Low Power", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_1 = logic_module( + "sky130_fd_sc_lp__fa_1", + "Low Power", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_2 = logic_module( + "sky130_fd_sc_lp__fa_2", + "Low Power", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_4 = logic_module( + "sky130_fd_sc_lp__fa_4", + "Low Power", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_lp = logic_module( + "sky130_fd_sc_lp__fa_lp", + "Low Power", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_m = logic_module( + "sky130_fd_sc_lp__fa_m", + "Low Power", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_1 = logic_module( + "sky130_fd_sc_lp__fah_1", + "Low Power", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fahcin_1 = logic_module( + "sky130_fd_sc_lp__fahcin_1", + "Low Power", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fahcon_1 = logic_module( + "sky130_fd_sc_lp__fahcon_1", + "Low Power", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"], +) +fill_1 = logic_module( + "sky130_fd_sc_lp__fill_1", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_2 = logic_module( + "sky130_fd_sc_lp__fill_2", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_4 = logic_module( + "sky130_fd_sc_lp__fill_4", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_8 = logic_module( + "sky130_fd_sc_lp__fill_8", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +ha_0 = logic_module( + "sky130_fd_sc_lp__ha_0", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_1 = logic_module( + "sky130_fd_sc_lp__ha_1", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_2 = logic_module( + "sky130_fd_sc_lp__ha_2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_4 = logic_module( + "sky130_fd_sc_lp__ha_4", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_lp = logic_module( + "sky130_fd_sc_lp__ha_lp", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_m = logic_module( + "sky130_fd_sc_lp__ha_m", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +inputiso0n_lp = logic_module( + "sky130_fd_sc_lp__inputiso0n_lp", + "Low Power", + ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +inputiso0p_lp = logic_module( + "sky130_fd_sc_lp__inputiso0p_lp", + "Low Power", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +inputiso1n_lp = logic_module( + "sky130_fd_sc_lp__inputiso1n_lp", + "Low Power", + ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +inputiso1p_lp = logic_module( + "sky130_fd_sc_lp__inputiso1p_lp", + "Low Power", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +inputisolatch_lp = logic_module( + "sky130_fd_sc_lp__inputisolatch_lp", + "Low Power", + ["D", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +inv_0 = logic_module( + "sky130_fd_sc_lp__inv_0", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_1 = logic_module( + "sky130_fd_sc_lp__inv_1", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_2 = logic_module( + "sky130_fd_sc_lp__inv_2", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_4 = logic_module( + "sky130_fd_sc_lp__inv_4", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_8 = logic_module( + "sky130_fd_sc_lp__inv_8", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_16 = logic_module( + "sky130_fd_sc_lp__inv_16", "Low Power", ["A", "VGND", "VNB", "VPB", "Y"] +) +inv_lp = logic_module( + "sky130_fd_sc_lp__inv_lp", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_m = logic_module( + "sky130_fd_sc_lp__inv_m", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +invkapwr_1 = logic_module( + "sky130_fd_sc_lp__invkapwr_1", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +invkapwr_2 = logic_module( + "sky130_fd_sc_lp__invkapwr_2", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +invkapwr_4 = logic_module( + "sky130_fd_sc_lp__invkapwr_4", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +invkapwr_8 = logic_module( + "sky130_fd_sc_lp__invkapwr_8", + "Low Power", + ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +invlp_0 = logic_module( + "sky130_fd_sc_lp__invlp_0", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +invlp_1 = logic_module( + "sky130_fd_sc_lp__invlp_1", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +invlp_2 = logic_module( + "sky130_fd_sc_lp__invlp_2", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +invlp_4 = logic_module( + "sky130_fd_sc_lp__invlp_4", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +invlp_8 = logic_module( + "sky130_fd_sc_lp__invlp_8", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +invlp_m = logic_module( + "sky130_fd_sc_lp__invlp_m", + "Low Power", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +iso0n_lp2 = logic_module( + "sky130_fd_sc_lp__iso0n_lp2", + "Low Power", + ["A", "SLEEP_B", "KAGND", "VGND", "VNB", "VPB", "VPWR", "X"], +) +iso0n_lp = logic_module( + "sky130_fd_sc_lp__iso0n_lp", + "Low Power", + ["A", "KAGND", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +iso0p_lp2 = logic_module( + "sky130_fd_sc_lp__iso0p_lp2", + "Low Power", + ["A", "SLEEP", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +iso0p_lp = logic_module( + "sky130_fd_sc_lp__iso0p_lp", + "Low Power", + ["A", "KAPWR", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +iso1n_lp2 = logic_module( + "sky130_fd_sc_lp__iso1n_lp2", + "Low Power", + ["A", "SLEEP_B", "KAGND", "VGND", "VNB", "VPB", "VPWR", "X"], +) +iso1n_lp = logic_module( + "sky130_fd_sc_lp__iso1n_lp", + "Low Power", + ["A", "KAGND", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +iso1p_lp2 = logic_module( + "sky130_fd_sc_lp__iso1p_lp2", + "Low Power", + ["A", "SLEEP", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], +) +iso1p_lp = logic_module( + "sky130_fd_sc_lp__iso1p_lp", + "Low Power", + ["A", "KAPWR", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +isobufsrc_1 = logic_module( + "sky130_fd_sc_lp__isobufsrc_1", + "Low Power", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +isobufsrc_2 = logic_module( + "sky130_fd_sc_lp__isobufsrc_2", + "Low Power", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +isobufsrc_4 = logic_module( + "sky130_fd_sc_lp__isobufsrc_4", + "Low Power", + ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], +) +isolatch_lp = logic_module( + "sky130_fd_sc_lp__isolatch_lp", + "Low Power", + ["D", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +lsbuf_lp = logic_module( + "sky130_fd_sc_lp__lsbuf_lp", + "Low Power", + ["A", "DESTPWR", "DESTVPB", "VGND", "VPB", "VPWR", "X"], +) +lsbufiso0p_lp = logic_module( + "sky130_fd_sc_lp__lsbufiso0p_lp", + "Low Power", + ["A", "DESTPWR", "DESTVPB", "SLEEP", "VGND", "VPB", "VPWR", "X"], +) +lsbufiso1p_lp = logic_module( + "sky130_fd_sc_lp__lsbufiso1p_lp", + "Low Power", + ["A", "DESTPWR", "DESTVPB", "SLEEP", "VGND", "VPB", "VPWR", "X"], +) +maj3_0 = logic_module( + "sky130_fd_sc_lp__maj3_0", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_1 = logic_module( + "sky130_fd_sc_lp__maj3_1", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_2 = logic_module( + "sky130_fd_sc_lp__maj3_2", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_4 = logic_module( + "sky130_fd_sc_lp__maj3_4", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_lp = logic_module( + "sky130_fd_sc_lp__maj3_lp", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_m = logic_module( + "sky130_fd_sc_lp__maj3_m", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_0 = logic_module( + "sky130_fd_sc_lp__mux2_0", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_1 = logic_module( + "sky130_fd_sc_lp__mux2_1", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_2 = logic_module( + "sky130_fd_sc_lp__mux2_2", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_4 = logic_module( + "sky130_fd_sc_lp__mux2_4", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_8 = logic_module( + "sky130_fd_sc_lp__mux2_8", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_lp2 = logic_module( + "sky130_fd_sc_lp__mux2_lp2", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_lp = logic_module( + "sky130_fd_sc_lp__mux2_lp", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_m = logic_module( + "sky130_fd_sc_lp__mux2_m", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2i_0 = logic_module( + "sky130_fd_sc_lp__mux2i_0", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_1 = logic_module( + "sky130_fd_sc_lp__mux2i_1", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_2 = logic_module( + "sky130_fd_sc_lp__mux2i_2", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_4 = logic_module( + "sky130_fd_sc_lp__mux2i_4", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_lp2 = logic_module( + "sky130_fd_sc_lp__mux2i_lp2", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_lp = logic_module( + "sky130_fd_sc_lp__mux2i_lp", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_m = logic_module( + "sky130_fd_sc_lp__mux2i_m", + "Low Power", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux4_0 = logic_module( + "sky130_fd_sc_lp__mux4_0", + "Low Power", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_1 = logic_module( + "sky130_fd_sc_lp__mux4_1", + "Low Power", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_2 = logic_module( + "sky130_fd_sc_lp__mux4_2", + "Low Power", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_4 = logic_module( + "sky130_fd_sc_lp__mux4_4", + "Low Power", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_lp = logic_module( + "sky130_fd_sc_lp__mux4_lp", + "Low Power", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_m = logic_module( + "sky130_fd_sc_lp__mux4_m", + "Low Power", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +nand2_0 = logic_module( + "sky130_fd_sc_lp__nand2_0", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_1 = logic_module( + "sky130_fd_sc_lp__nand2_1", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_2 = logic_module( + "sky130_fd_sc_lp__nand2_2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_4 = logic_module( + "sky130_fd_sc_lp__nand2_4", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_8 = logic_module( + "sky130_fd_sc_lp__nand2_8", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_lp2 = logic_module( + "sky130_fd_sc_lp__nand2_lp2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_lp = logic_module( + "sky130_fd_sc_lp__nand2_lp", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_m = logic_module( + "sky130_fd_sc_lp__nand2_m", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_1 = logic_module( + "sky130_fd_sc_lp__nand2b_1", + "Low Power", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_2 = logic_module( + "sky130_fd_sc_lp__nand2b_2", + "Low Power", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_4 = logic_module( + "sky130_fd_sc_lp__nand2b_4", + "Low Power", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_lp = logic_module( + "sky130_fd_sc_lp__nand2b_lp", + "Low Power", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_m = logic_module( + "sky130_fd_sc_lp__nand2b_m", + "Low Power", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_0 = logic_module( + "sky130_fd_sc_lp__nand3_0", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_1 = logic_module( + "sky130_fd_sc_lp__nand3_1", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_2 = logic_module( + "sky130_fd_sc_lp__nand3_2", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_4 = logic_module( + "sky130_fd_sc_lp__nand3_4", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_lp = logic_module( + "sky130_fd_sc_lp__nand3_lp", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_m = logic_module( + "sky130_fd_sc_lp__nand3_m", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_1 = logic_module( + "sky130_fd_sc_lp__nand3b_1", + "Low Power", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_2 = logic_module( + "sky130_fd_sc_lp__nand3b_2", + "Low Power", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_4 = logic_module( + "sky130_fd_sc_lp__nand3b_4", + "Low Power", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_lp = logic_module( + "sky130_fd_sc_lp__nand3b_lp", + "Low Power", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_m = logic_module( + "sky130_fd_sc_lp__nand3b_m", + "Low Power", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_0 = logic_module( + "sky130_fd_sc_lp__nand4_0", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_1 = logic_module( + "sky130_fd_sc_lp__nand4_1", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_2 = logic_module( + "sky130_fd_sc_lp__nand4_2", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_4 = logic_module( + "sky130_fd_sc_lp__nand4_4", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_lp = logic_module( + "sky130_fd_sc_lp__nand4_lp", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_m = logic_module( + "sky130_fd_sc_lp__nand4_m", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_1 = logic_module( + "sky130_fd_sc_lp__nand4b_1", + "Low Power", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_2 = logic_module( + "sky130_fd_sc_lp__nand4b_2", + "Low Power", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_4 = logic_module( + "sky130_fd_sc_lp__nand4b_4", + "Low Power", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_lp = logic_module( + "sky130_fd_sc_lp__nand4b_lp", + "Low Power", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_m = logic_module( + "sky130_fd_sc_lp__nand4b_m", + "Low Power", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_1 = logic_module( + "sky130_fd_sc_lp__nand4bb_1", + "Low Power", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_2 = logic_module( + "sky130_fd_sc_lp__nand4bb_2", + "Low Power", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_4 = logic_module( + "sky130_fd_sc_lp__nand4bb_4", + "Low Power", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_lp = logic_module( + "sky130_fd_sc_lp__nand4bb_lp", + "Low Power", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_m = logic_module( + "sky130_fd_sc_lp__nand4bb_m", + "Low Power", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_0 = logic_module( + "sky130_fd_sc_lp__nor2_0", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_1 = logic_module( + "sky130_fd_sc_lp__nor2_1", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_2 = logic_module( + "sky130_fd_sc_lp__nor2_2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_4 = logic_module( + "sky130_fd_sc_lp__nor2_4", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_8 = logic_module( + "sky130_fd_sc_lp__nor2_8", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_lp2 = logic_module( + "sky130_fd_sc_lp__nor2_lp2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_lp = logic_module( + "sky130_fd_sc_lp__nor2_lp", "Low Power", ["A", "B", "VNB", "VPB", "Y"] +) +nor2_m = logic_module( + "sky130_fd_sc_lp__nor2_m", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_1 = logic_module( + "sky130_fd_sc_lp__nor2b_1", + "Low Power", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_2 = logic_module( + "sky130_fd_sc_lp__nor2b_2", + "Low Power", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_4 = logic_module( + "sky130_fd_sc_lp__nor2b_4", + "Low Power", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_lp = logic_module( + "sky130_fd_sc_lp__nor2b_lp", + "Low Power", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_m = logic_module( + "sky130_fd_sc_lp__nor2b_m", + "Low Power", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_0 = logic_module( + "sky130_fd_sc_lp__nor3_0", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_1 = logic_module( + "sky130_fd_sc_lp__nor3_1", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_2 = logic_module( + "sky130_fd_sc_lp__nor3_2", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_4 = logic_module( + "sky130_fd_sc_lp__nor3_4", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_lp = logic_module( + "sky130_fd_sc_lp__nor3_lp", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_m = logic_module( + "sky130_fd_sc_lp__nor3_m", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_1 = logic_module( + "sky130_fd_sc_lp__nor3b_1", + "Low Power", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_2 = logic_module( + "sky130_fd_sc_lp__nor3b_2", + "Low Power", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_4 = logic_module( + "sky130_fd_sc_lp__nor3b_4", + "Low Power", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_lp = logic_module( + "sky130_fd_sc_lp__nor3b_lp", + "Low Power", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_m = logic_module( + "sky130_fd_sc_lp__nor3b_m", + "Low Power", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_0 = logic_module( + "sky130_fd_sc_lp__nor4_0", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_1 = logic_module( + "sky130_fd_sc_lp__nor4_1", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_2 = logic_module( + "sky130_fd_sc_lp__nor4_2", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_4 = logic_module( + "sky130_fd_sc_lp__nor4_4", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_lp = logic_module( + "sky130_fd_sc_lp__nor4_lp", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_m = logic_module( + "sky130_fd_sc_lp__nor4_m", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_1 = logic_module( + "sky130_fd_sc_lp__nor4b_1", + "Low Power", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_2 = logic_module( + "sky130_fd_sc_lp__nor4b_2", + "Low Power", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_4 = logic_module( + "sky130_fd_sc_lp__nor4b_4", + "Low Power", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_lp = logic_module( + "sky130_fd_sc_lp__nor4b_lp", + "Low Power", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_m = logic_module( + "sky130_fd_sc_lp__nor4b_m", + "Low Power", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_1 = logic_module( + "sky130_fd_sc_lp__nor4bb_1", + "Low Power", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_2 = logic_module( + "sky130_fd_sc_lp__nor4bb_2", + "Low Power", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_4 = logic_module( + "sky130_fd_sc_lp__nor4bb_4", + "Low Power", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_lp = logic_module( + "sky130_fd_sc_lp__nor4bb_lp", + "Low Power", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_m = logic_module( + "sky130_fd_sc_lp__nor4bb_m", + "Low Power", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2a_0 = logic_module( + "sky130_fd_sc_lp__o2bb2a_0", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_1 = logic_module( + "sky130_fd_sc_lp__o2bb2a_1", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_2 = logic_module( + "sky130_fd_sc_lp__o2bb2a_2", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_4 = logic_module( + "sky130_fd_sc_lp__o2bb2a_4", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_lp = logic_module( + "sky130_fd_sc_lp__o2bb2a_lp", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_m = logic_module( + "sky130_fd_sc_lp__o2bb2a_m", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2ai_0 = logic_module( + "sky130_fd_sc_lp__o2bb2ai_0", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_1 = logic_module( + "sky130_fd_sc_lp__o2bb2ai_1", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_2 = logic_module( + "sky130_fd_sc_lp__o2bb2ai_2", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_4 = logic_module( + "sky130_fd_sc_lp__o2bb2ai_4", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_lp = logic_module( + "sky130_fd_sc_lp__o2bb2ai_lp", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_m = logic_module( + "sky130_fd_sc_lp__o2bb2ai_m", + "Low Power", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21a_0 = logic_module( + "sky130_fd_sc_lp__o21a_0", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_1 = logic_module( + "sky130_fd_sc_lp__o21a_1", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_2 = logic_module( + "sky130_fd_sc_lp__o21a_2", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_4 = logic_module( + "sky130_fd_sc_lp__o21a_4", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_lp = logic_module( + "sky130_fd_sc_lp__o21a_lp", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_m = logic_module( + "sky130_fd_sc_lp__o21a_m", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ai_0 = logic_module( + "sky130_fd_sc_lp__o21ai_0", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_1 = logic_module( + "sky130_fd_sc_lp__o21ai_1", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_2 = logic_module( + "sky130_fd_sc_lp__o21ai_2", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_4 = logic_module( + "sky130_fd_sc_lp__o21ai_4", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_lp = logic_module( + "sky130_fd_sc_lp__o21ai_lp", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_m = logic_module( + "sky130_fd_sc_lp__o21ai_m", + "Low Power", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ba_0 = logic_module( + "sky130_fd_sc_lp__o21ba_0", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_1 = logic_module( + "sky130_fd_sc_lp__o21ba_1", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_2 = logic_module( + "sky130_fd_sc_lp__o21ba_2", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_4 = logic_module( + "sky130_fd_sc_lp__o21ba_4", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_lp = logic_module( + "sky130_fd_sc_lp__o21ba_lp", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_m = logic_module( + "sky130_fd_sc_lp__o21ba_m", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21bai_0 = logic_module( + "sky130_fd_sc_lp__o21bai_0", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_1 = logic_module( + "sky130_fd_sc_lp__o21bai_1", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_2 = logic_module( + "sky130_fd_sc_lp__o21bai_2", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_4 = logic_module( + "sky130_fd_sc_lp__o21bai_4", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_lp = logic_module( + "sky130_fd_sc_lp__o21bai_lp", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_m = logic_module( + "sky130_fd_sc_lp__o21bai_m", + "Low Power", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22a_0 = logic_module( + "sky130_fd_sc_lp__o22a_0", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_1 = logic_module( + "sky130_fd_sc_lp__o22a_1", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_2 = logic_module( + "sky130_fd_sc_lp__o22a_2", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_4 = logic_module( + "sky130_fd_sc_lp__o22a_4", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_lp = logic_module( + "sky130_fd_sc_lp__o22a_lp", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_m = logic_module( + "sky130_fd_sc_lp__o22a_m", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22ai_0 = logic_module( + "sky130_fd_sc_lp__o22ai_0", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_1 = logic_module( + "sky130_fd_sc_lp__o22ai_1", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_2 = logic_module( + "sky130_fd_sc_lp__o22ai_2", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_4 = logic_module( + "sky130_fd_sc_lp__o22ai_4", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_lp = logic_module( + "sky130_fd_sc_lp__o22ai_lp", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_m = logic_module( + "sky130_fd_sc_lp__o22ai_m", + "Low Power", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31a_0 = logic_module( + "sky130_fd_sc_lp__o31a_0", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_1 = logic_module( + "sky130_fd_sc_lp__o31a_1", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_2 = logic_module( + "sky130_fd_sc_lp__o31a_2", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_4 = logic_module( + "sky130_fd_sc_lp__o31a_4", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_lp = logic_module( + "sky130_fd_sc_lp__o31a_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_m = logic_module( + "sky130_fd_sc_lp__o31a_m", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31ai_0 = logic_module( + "sky130_fd_sc_lp__o31ai_0", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_1 = logic_module( + "sky130_fd_sc_lp__o31ai_1", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_2 = logic_module( + "sky130_fd_sc_lp__o31ai_2", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_4 = logic_module( + "sky130_fd_sc_lp__o31ai_4", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_lp = logic_module( + "sky130_fd_sc_lp__o31ai_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_m = logic_module( + "sky130_fd_sc_lp__o31ai_m", + "Low Power", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32a_0 = logic_module( + "sky130_fd_sc_lp__o32a_0", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_1 = logic_module( + "sky130_fd_sc_lp__o32a_1", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_2 = logic_module( + "sky130_fd_sc_lp__o32a_2", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_4 = logic_module( + "sky130_fd_sc_lp__o32a_4", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_lp = logic_module( + "sky130_fd_sc_lp__o32a_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_m = logic_module( + "sky130_fd_sc_lp__o32a_m", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32ai_0 = logic_module( + "sky130_fd_sc_lp__o32ai_0", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_1 = logic_module( + "sky130_fd_sc_lp__o32ai_1", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_2 = logic_module( + "sky130_fd_sc_lp__o32ai_2", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_4 = logic_module( + "sky130_fd_sc_lp__o32ai_4", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_lp = logic_module( + "sky130_fd_sc_lp__o32ai_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_m = logic_module( + "sky130_fd_sc_lp__o32ai_m", + "Low Power", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41a_0 = logic_module( + "sky130_fd_sc_lp__o41a_0", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_1 = logic_module( + "sky130_fd_sc_lp__o41a_1", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_2 = logic_module( + "sky130_fd_sc_lp__o41a_2", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_4 = logic_module( + "sky130_fd_sc_lp__o41a_4", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_lp = logic_module( + "sky130_fd_sc_lp__o41a_lp", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_m = logic_module( + "sky130_fd_sc_lp__o41a_m", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41ai_0 = logic_module( + "sky130_fd_sc_lp__o41ai_0", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_1 = logic_module( + "sky130_fd_sc_lp__o41ai_1", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_2 = logic_module( + "sky130_fd_sc_lp__o41ai_2", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_4 = logic_module( + "sky130_fd_sc_lp__o41ai_4", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_lp = logic_module( + "sky130_fd_sc_lp__o41ai_lp", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_m = logic_module( + "sky130_fd_sc_lp__o41ai_m", + "Low Power", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211a_0 = logic_module( + "sky130_fd_sc_lp__o211a_0", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_1 = logic_module( + "sky130_fd_sc_lp__o211a_1", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_2 = logic_module( + "sky130_fd_sc_lp__o211a_2", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_4 = logic_module( + "sky130_fd_sc_lp__o211a_4", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_lp = logic_module( + "sky130_fd_sc_lp__o211a_lp", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_m = logic_module( + "sky130_fd_sc_lp__o211a_m", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211ai_0 = logic_module( + "sky130_fd_sc_lp__o211ai_0", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_1 = logic_module( + "sky130_fd_sc_lp__o211ai_1", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_2 = logic_module( + "sky130_fd_sc_lp__o211ai_2", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_4 = logic_module( + "sky130_fd_sc_lp__o211ai_4", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_lp = logic_module( + "sky130_fd_sc_lp__o211ai_lp", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_m = logic_module( + "sky130_fd_sc_lp__o211ai_m", + "Low Power", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221a_0 = logic_module( + "sky130_fd_sc_lp__o221a_0", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_1 = logic_module( + "sky130_fd_sc_lp__o221a_1", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_2 = logic_module( + "sky130_fd_sc_lp__o221a_2", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_4 = logic_module( + "sky130_fd_sc_lp__o221a_4", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_lp = logic_module( + "sky130_fd_sc_lp__o221a_lp", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_m = logic_module( + "sky130_fd_sc_lp__o221a_m", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221ai_0 = logic_module( + "sky130_fd_sc_lp__o221ai_0", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_1 = logic_module( + "sky130_fd_sc_lp__o221ai_1", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_2 = logic_module( + "sky130_fd_sc_lp__o221ai_2", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_4 = logic_module( + "sky130_fd_sc_lp__o221ai_4", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_lp = logic_module( + "sky130_fd_sc_lp__o221ai_lp", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_m = logic_module( + "sky130_fd_sc_lp__o221ai_m", + "Low Power", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311a_0 = logic_module( + "sky130_fd_sc_lp__o311a_0", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_1 = logic_module( + "sky130_fd_sc_lp__o311a_1", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_2 = logic_module( + "sky130_fd_sc_lp__o311a_2", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_4 = logic_module( + "sky130_fd_sc_lp__o311a_4", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_lp = logic_module( + "sky130_fd_sc_lp__o311a_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_m = logic_module( + "sky130_fd_sc_lp__o311a_m", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311ai_0 = logic_module( + "sky130_fd_sc_lp__o311ai_0", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_1 = logic_module( + "sky130_fd_sc_lp__o311ai_1", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_2 = logic_module( + "sky130_fd_sc_lp__o311ai_2", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_4 = logic_module( + "sky130_fd_sc_lp__o311ai_4", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_lp = logic_module( + "sky130_fd_sc_lp__o311ai_lp", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_m = logic_module( + "sky130_fd_sc_lp__o311ai_m", + "Low Power", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111a_0 = logic_module( + "sky130_fd_sc_lp__o2111a_0", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_1 = logic_module( + "sky130_fd_sc_lp__o2111a_1", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_2 = logic_module( + "sky130_fd_sc_lp__o2111a_2", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_4 = logic_module( + "sky130_fd_sc_lp__o2111a_4", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_lp = logic_module( + "sky130_fd_sc_lp__o2111a_lp", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_m = logic_module( + "sky130_fd_sc_lp__o2111a_m", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111ai_0 = logic_module( + "sky130_fd_sc_lp__o2111ai_0", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_1 = logic_module( + "sky130_fd_sc_lp__o2111ai_1", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_2 = logic_module( + "sky130_fd_sc_lp__o2111ai_2", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_4 = logic_module( + "sky130_fd_sc_lp__o2111ai_4", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_lp = logic_module( + "sky130_fd_sc_lp__o2111ai_lp", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_m = logic_module( + "sky130_fd_sc_lp__o2111ai_m", + "Low Power", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +or2_0 = logic_module( + "sky130_fd_sc_lp__or2_0", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_1 = logic_module( + "sky130_fd_sc_lp__or2_1", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_2 = logic_module( + "sky130_fd_sc_lp__or2_2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_4 = logic_module( + "sky130_fd_sc_lp__or2_4", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_lp2 = logic_module( + "sky130_fd_sc_lp__or2_lp2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_lp = logic_module( + "sky130_fd_sc_lp__or2_lp", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_m = logic_module( + "sky130_fd_sc_lp__or2_m", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_1 = logic_module( + "sky130_fd_sc_lp__or2b_1", + "Low Power", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_2 = logic_module( + "sky130_fd_sc_lp__or2b_2", + "Low Power", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_4 = logic_module( + "sky130_fd_sc_lp__or2b_4", + "Low Power", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_lp = logic_module( + "sky130_fd_sc_lp__or2b_lp", + "Low Power", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_m = logic_module( + "sky130_fd_sc_lp__or2b_m", + "Low Power", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_0 = logic_module( + "sky130_fd_sc_lp__or3_0", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_1 = logic_module( + "sky130_fd_sc_lp__or3_1", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_2 = logic_module( + "sky130_fd_sc_lp__or3_2", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_4 = logic_module( + "sky130_fd_sc_lp__or3_4", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_lp = logic_module( + "sky130_fd_sc_lp__or3_lp", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_m = logic_module( + "sky130_fd_sc_lp__or3_m", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_1 = logic_module( + "sky130_fd_sc_lp__or3b_1", + "Low Power", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_2 = logic_module( + "sky130_fd_sc_lp__or3b_2", + "Low Power", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_4 = logic_module( + "sky130_fd_sc_lp__or3b_4", + "Low Power", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_lp = logic_module( + "sky130_fd_sc_lp__or3b_lp", + "Low Power", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_m = logic_module( + "sky130_fd_sc_lp__or3b_m", + "Low Power", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_0 = logic_module( + "sky130_fd_sc_lp__or4_0", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_1 = logic_module( + "sky130_fd_sc_lp__or4_1", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_2 = logic_module( + "sky130_fd_sc_lp__or4_2", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_4 = logic_module( + "sky130_fd_sc_lp__or4_4", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_lp = logic_module( + "sky130_fd_sc_lp__or4_lp", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_m = logic_module( + "sky130_fd_sc_lp__or4_m", + "Low Power", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_1 = logic_module( + "sky130_fd_sc_lp__or4b_1", + "Low Power", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_2 = logic_module( + "sky130_fd_sc_lp__or4b_2", + "Low Power", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_4 = logic_module( + "sky130_fd_sc_lp__or4b_4", + "Low Power", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_lp = logic_module( + "sky130_fd_sc_lp__or4b_lp", + "Low Power", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_m = logic_module( + "sky130_fd_sc_lp__or4b_m", + "Low Power", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_1 = logic_module( + "sky130_fd_sc_lp__or4bb_1", + "Low Power", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_2 = logic_module( + "sky130_fd_sc_lp__or4bb_2", + "Low Power", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_4 = logic_module( + "sky130_fd_sc_lp__or4bb_4", + "Low Power", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_lp = logic_module( + "sky130_fd_sc_lp__or4bb_lp", + "Low Power", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_m = logic_module( + "sky130_fd_sc_lp__or4bb_m", + "Low Power", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +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"], +) +sdfrtn_1 = logic_module( + "sky130_fd_sc_lp__sdfrtn_1", + "Low Power", + ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_1 = logic_module( + "sky130_fd_sc_lp__sdfrtp_1", + "Low Power", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_2 = logic_module( + "sky130_fd_sc_lp__sdfrtp_2", + "Low Power", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_4 = logic_module( + "sky130_fd_sc_lp__sdfrtp_4", + "Low Power", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_lp2 = logic_module( + "sky130_fd_sc_lp__sdfrtp_lp2", + "Low Power", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_ov2 = logic_module( + "sky130_fd_sc_lp__sdfrtp_ov2", + "Low Power", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +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"], +) +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"], +) +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"], +) +sdfstp_1 = logic_module( + "sky130_fd_sc_lp__sdfstp_1", + "Low Power", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_2 = logic_module( + "sky130_fd_sc_lp__sdfstp_2", + "Low Power", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_4 = logic_module( + "sky130_fd_sc_lp__sdfstp_4", + "Low Power", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_lp = logic_module( + "sky130_fd_sc_lp__sdfstp_lp", + "Low Power", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxbp_1 = logic_module( + "sky130_fd_sc_lp__sdfxbp_1", + "Low Power", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxbp_2 = logic_module( + "sky130_fd_sc_lp__sdfxbp_2", + "Low Power", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxbp_lp = logic_module( + "sky130_fd_sc_lp__sdfxbp_lp", + "Low Power", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxtp_1 = logic_module( + "sky130_fd_sc_lp__sdfxtp_1", + "Low Power", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_2 = logic_module( + "sky130_fd_sc_lp__sdfxtp_2", + "Low Power", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_4 = logic_module( + "sky130_fd_sc_lp__sdfxtp_4", + "Low Power", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_lp = logic_module( + "sky130_fd_sc_lp__sdfxtp_lp", + "Low Power", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdlclkp_1 = logic_module( + "sky130_fd_sc_lp__sdlclkp_1", + "Low Power", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_2 = logic_module( + "sky130_fd_sc_lp__sdlclkp_2", + "Low Power", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_4 = logic_module( + "sky130_fd_sc_lp__sdlclkp_4", + "Low Power", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_lp = logic_module( + "sky130_fd_sc_lp__sdlclkp_lp", + "Low Power", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sleep_pargate_plv_7 = logic_module( + "sky130_fd_sc_lp__sleep_pargate_plv_7", + "Low Power", + ["VIRTPWR", "VPWR", "SLEEP", "VPB"], +) +sleep_pargate_plv_14 = logic_module( + "sky130_fd_sc_lp__sleep_pargate_plv_14", + "Low Power", + ["VIRTPWR", "VPWR", "SLEEP", "VPB"], +) +sleep_pargate_plv_21 = logic_module( + "sky130_fd_sc_lp__sleep_pargate_plv_21", + "Low Power", + ["VIRTPWR", "VPWR", "SLEEP", "VPB"], +) +sleep_pargate_plv_28 = logic_module( + "sky130_fd_sc_lp__sleep_pargate_plv_28", + "Low Power", + ["VIRTPWR", "VPWR", "SLEEP", "VPB"], +) +sleep_sergate_plv_14 = logic_module( + "sky130_fd_sc_lp__sleep_sergate_plv_14", + "Low Power", + ["VIRTPWR", "VPWR", "SLEEP", "VPB"], +) +sleep_sergate_plv_21 = logic_module( + "sky130_fd_sc_lp__sleep_sergate_plv_21", + "Low Power", + ["VIRTPWR", "VPWR", "SLEEP", "VPB"], +) +sleep_sergate_plv_28 = logic_module( + "sky130_fd_sc_lp__sleep_sergate_plv_28", + "Low Power", + ["VIRTPWR", "VPWR", "SLEEP", "VPB"], +) +srdlrtp_1 = logic_module( + "sky130_fd_sc_lp__srdlrtp_1", + "Low Power", + ["D", "GATE", "RESET_B", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +srdlstp_1 = logic_module( + "sky130_fd_sc_lp__srdlstp_1", + "Low Power", + ["D", "GATE", "SET_B", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +srdlxtp_1 = logic_module( + "sky130_fd_sc_lp__srdlxtp_1", + "Low Power", + ["D", "GATE", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sregrbp_1 = logic_module( + "sky130_fd_sc_lp__sregrbp_1", + "Low Power", + ["ASYNC", "CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sregsbp_1 = logic_module( + "sky130_fd_sc_lp__sregsbp_1", + "Low Power", + ["ASYNC", "CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +srsdfrtn_1 = logic_module( + "sky130_fd_sc_lp__srsdfrtn_1", + "Low Power", + ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SLEEP_B", "KAPWR", "VGND", "VNB"], +) +srsdfrtp_1 = logic_module( + "sky130_fd_sc_lp__srsdfrtp_1", + "Low Power", + ["CLK", "D", "RESET_B", "SCD", "SCE", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB"], +) +srsdfstp_1 = logic_module( + "sky130_fd_sc_lp__srsdfstp_1", + "Low Power", + ["CLK", "D", "SCD", "SCE", "SET_B", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB"], +) +srsdfxtp_1 = logic_module( + "sky130_fd_sc_lp__srsdfxtp_1", + "Low Power", + ["CLK", "D", "SCD", "SCE", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR"], +) +tap_1 = logic_module( + "sky130_fd_sc_lp__tap_1", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +tap_2 = logic_module( + "sky130_fd_sc_lp__tap_2", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] +) +tapvgnd2_1 = logic_module( + "sky130_fd_sc_lp__tapvgnd2_1", "Low Power", ["VGND", "VPB", "VPWR"] +) +tapvgnd_1 = logic_module( + "sky130_fd_sc_lp__tapvgnd_1", "Low Power", ["VGND", "VPB", "VPWR"] +) +tapvpwrvgnd_1 = logic_module( + "sky130_fd_sc_lp__tapvpwrvgnd_1", "Low Power", ["VGND", "VPWR"] +) +xnor2_0 = logic_module( + "sky130_fd_sc_lp__xnor2_0", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_1 = logic_module( + "sky130_fd_sc_lp__xnor2_1", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_2 = logic_module( + "sky130_fd_sc_lp__xnor2_2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_4 = logic_module( + "sky130_fd_sc_lp__xnor2_4", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_lp = logic_module( + "sky130_fd_sc_lp__xnor2_lp", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_m = logic_module( + "sky130_fd_sc_lp__xnor2_m", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor3_1 = logic_module( + "sky130_fd_sc_lp__xnor3_1", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_lp = logic_module( + "sky130_fd_sc_lp__xnor3_lp", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_0 = logic_module( + "sky130_fd_sc_lp__xor2_0", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_1 = logic_module( + "sky130_fd_sc_lp__xor2_1", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_2 = logic_module( + "sky130_fd_sc_lp__xor2_2", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_4 = logic_module( + "sky130_fd_sc_lp__xor2_4", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_lp = logic_module( + "sky130_fd_sc_lp__xor2_lp", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_m = logic_module( + "sky130_fd_sc_lp__xor2_m", + "Low Power", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_1 = logic_module( + "sky130_fd_sc_lp__xor3_1", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_lp = logic_module( + "sky130_fd_sc_lp__xor3_lp", + "Low Power", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) diff --git a/sky130/hdl21/sky130_gf/digital_cells/low_speed.py b/sky130/hdl21/sky130_gf/digital_cells/low_speed.py new file mode 100644 index 000000000..8157a5873 --- /dev/null +++ b/sky130/hdl21/sky130_gf/digital_cells/low_speed.py @@ -0,0 +1,1939 @@ +from ..pdk_data import logic_module + +a2bb2o_1 = logic_module( + "sky130_fd_sc_ls__a2bb2o_1", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_2 = logic_module( + "sky130_fd_sc_ls__a2bb2o_2", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_4 = logic_module( + "sky130_fd_sc_ls__a2bb2o_4", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2oi_1 = logic_module( + "sky130_fd_sc_ls__a2bb2oi_1", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_2 = logic_module( + "sky130_fd_sc_ls__a2bb2oi_2", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_4 = logic_module( + "sky130_fd_sc_ls__a2bb2oi_4", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21bo_1 = logic_module( + "sky130_fd_sc_ls__a21bo_1", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_2 = logic_module( + "sky130_fd_sc_ls__a21bo_2", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_4 = logic_module( + "sky130_fd_sc_ls__a21bo_4", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21boi_1 = logic_module( + "sky130_fd_sc_ls__a21boi_1", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_2 = logic_module( + "sky130_fd_sc_ls__a21boi_2", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_4 = logic_module( + "sky130_fd_sc_ls__a21boi_4", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21o_1 = logic_module( + "sky130_fd_sc_ls__a21o_1", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_2 = logic_module( + "sky130_fd_sc_ls__a21o_2", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_4 = logic_module( + "sky130_fd_sc_ls__a21o_4", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21oi_1 = logic_module( + "sky130_fd_sc_ls__a21oi_1", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_2 = logic_module( + "sky130_fd_sc_ls__a21oi_2", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_4 = logic_module( + "sky130_fd_sc_ls__a21oi_4", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22o_1 = logic_module( + "sky130_fd_sc_ls__a22o_1", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_2 = logic_module( + "sky130_fd_sc_ls__a22o_2", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_4 = logic_module( + "sky130_fd_sc_ls__a22o_4", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22oi_1 = logic_module( + "sky130_fd_sc_ls__a22oi_1", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_2 = logic_module( + "sky130_fd_sc_ls__a22oi_2", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_4 = logic_module( + "sky130_fd_sc_ls__a22oi_4", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31o_1 = logic_module( + "sky130_fd_sc_ls__a31o_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_2 = logic_module( + "sky130_fd_sc_ls__a31o_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_4 = logic_module( + "sky130_fd_sc_ls__a31o_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31oi_1 = logic_module( + "sky130_fd_sc_ls__a31oi_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_2 = logic_module( + "sky130_fd_sc_ls__a31oi_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_4 = logic_module( + "sky130_fd_sc_ls__a31oi_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32o_1 = logic_module( + "sky130_fd_sc_ls__a32o_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_2 = logic_module( + "sky130_fd_sc_ls__a32o_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_4 = logic_module( + "sky130_fd_sc_ls__a32o_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32oi_1 = logic_module( + "sky130_fd_sc_ls__a32oi_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_2 = logic_module( + "sky130_fd_sc_ls__a32oi_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_4 = logic_module( + "sky130_fd_sc_ls__a32oi_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41o_1 = logic_module( + "sky130_fd_sc_ls__a41o_1", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_2 = logic_module( + "sky130_fd_sc_ls__a41o_2", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_4 = logic_module( + "sky130_fd_sc_ls__a41o_4", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41oi_1 = logic_module( + "sky130_fd_sc_ls__a41oi_1", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_2 = logic_module( + "sky130_fd_sc_ls__a41oi_2", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_4 = logic_module( + "sky130_fd_sc_ls__a41oi_4", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211o_1 = logic_module( + "sky130_fd_sc_ls__a211o_1", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_2 = logic_module( + "sky130_fd_sc_ls__a211o_2", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_4 = logic_module( + "sky130_fd_sc_ls__a211o_4", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211oi_1 = logic_module( + "sky130_fd_sc_ls__a211oi_1", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_2 = logic_module( + "sky130_fd_sc_ls__a211oi_2", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_4 = logic_module( + "sky130_fd_sc_ls__a211oi_4", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221o_1 = logic_module( + "sky130_fd_sc_ls__a221o_1", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_2 = logic_module( + "sky130_fd_sc_ls__a221o_2", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_4 = logic_module( + "sky130_fd_sc_ls__a221o_4", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221oi_1 = logic_module( + "sky130_fd_sc_ls__a221oi_1", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_2 = logic_module( + "sky130_fd_sc_ls__a221oi_2", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_4 = logic_module( + "sky130_fd_sc_ls__a221oi_4", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a222o_1 = logic_module( + "sky130_fd_sc_ls__a222o_1", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a222o_2 = logic_module( + "sky130_fd_sc_ls__a222o_2", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a222oi_1 = logic_module( + "sky130_fd_sc_ls__a222oi_1", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a222oi_2 = logic_module( + "sky130_fd_sc_ls__a222oi_2", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311o_1 = logic_module( + "sky130_fd_sc_ls__a311o_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_2 = logic_module( + "sky130_fd_sc_ls__a311o_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_4 = logic_module( + "sky130_fd_sc_ls__a311o_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311oi_1 = logic_module( + "sky130_fd_sc_ls__a311oi_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_2 = logic_module( + "sky130_fd_sc_ls__a311oi_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_4 = logic_module( + "sky130_fd_sc_ls__a311oi_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111o_1 = logic_module( + "sky130_fd_sc_ls__a2111o_1", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_2 = logic_module( + "sky130_fd_sc_ls__a2111o_2", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_4 = logic_module( + "sky130_fd_sc_ls__a2111o_4", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111oi_1 = logic_module( + "sky130_fd_sc_ls__a2111oi_1", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_2 = logic_module( + "sky130_fd_sc_ls__a2111oi_2", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_4 = logic_module( + "sky130_fd_sc_ls__a2111oi_4", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +and2_1 = logic_module( + "sky130_fd_sc_ls__and2_1", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_2 = logic_module( + "sky130_fd_sc_ls__and2_2", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_4 = logic_module( + "sky130_fd_sc_ls__and2_4", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_1 = logic_module( + "sky130_fd_sc_ls__and2b_1", + "Low Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_2 = logic_module( + "sky130_fd_sc_ls__and2b_2", + "Low Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_4 = logic_module( + "sky130_fd_sc_ls__and2b_4", + "Low Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_1 = logic_module( + "sky130_fd_sc_ls__and3_1", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_2 = logic_module( + "sky130_fd_sc_ls__and3_2", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_4 = logic_module( + "sky130_fd_sc_ls__and3_4", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_1 = logic_module( + "sky130_fd_sc_ls__and3b_1", + "Low Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_2 = logic_module( + "sky130_fd_sc_ls__and3b_2", + "Low Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_4 = logic_module( + "sky130_fd_sc_ls__and3b_4", + "Low Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_1 = logic_module( + "sky130_fd_sc_ls__and4_1", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_2 = logic_module( + "sky130_fd_sc_ls__and4_2", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_4 = logic_module( + "sky130_fd_sc_ls__and4_4", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_1 = logic_module( + "sky130_fd_sc_ls__and4b_1", + "Low Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_2 = logic_module( + "sky130_fd_sc_ls__and4b_2", + "Low Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_4 = logic_module( + "sky130_fd_sc_ls__and4b_4", + "Low Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_1 = logic_module( + "sky130_fd_sc_ls__and4bb_1", + "Low Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_2 = logic_module( + "sky130_fd_sc_ls__and4bb_2", + "Low Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_4 = logic_module( + "sky130_fd_sc_ls__and4bb_4", + "Low Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_1 = logic_module( + "sky130_fd_sc_ls__buf_1", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_2 = logic_module( + "sky130_fd_sc_ls__buf_2", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_4 = logic_module( + "sky130_fd_sc_ls__buf_4", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_8 = logic_module( + "sky130_fd_sc_ls__buf_8", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +buf_16 = logic_module( + "sky130_fd_sc_ls__buf_16", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] +) +bufbuf_8 = logic_module( + "sky130_fd_sc_ls__bufbuf_8", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufbuf_16 = logic_module( + "sky130_fd_sc_ls__bufbuf_16", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufinv_8 = logic_module( + "sky130_fd_sc_ls__bufinv_8", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +bufinv_16 = logic_module( + "sky130_fd_sc_ls__bufinv_16", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkbuf_1 = logic_module( + "sky130_fd_sc_ls__clkbuf_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_2 = logic_module( + "sky130_fd_sc_ls__clkbuf_2", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_4 = logic_module( + "sky130_fd_sc_ls__clkbuf_4", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_8 = logic_module( + "sky130_fd_sc_ls__clkbuf_8", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_16 = logic_module( + "sky130_fd_sc_ls__clkbuf_16", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlyinv3sd1_1 = logic_module( + "sky130_fd_sc_ls__clkdlyinv3sd1_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv3sd2_1 = logic_module( + "sky130_fd_sc_ls__clkdlyinv3sd2_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv3sd3_1 = logic_module( + "sky130_fd_sc_ls__clkdlyinv3sd3_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv5sd1_1 = logic_module( + "sky130_fd_sc_ls__clkdlyinv5sd1_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv5sd2_1 = logic_module( + "sky130_fd_sc_ls__clkdlyinv5sd2_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv5sd3_1 = logic_module( + "sky130_fd_sc_ls__clkdlyinv5sd3_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_1 = logic_module( + "sky130_fd_sc_ls__clkinv_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_2 = logic_module( + "sky130_fd_sc_ls__clkinv_2", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_4 = logic_module( + "sky130_fd_sc_ls__clkinv_4", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_8 = logic_module( + "sky130_fd_sc_ls__clkinv_8", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_16 = logic_module( + "sky130_fd_sc_ls__clkinv_16", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +conb_1 = logic_module( + "sky130_fd_sc_ls__conb_1", + "Low Speed", + ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], +) +decap_4 = logic_module( + "sky130_fd_sc_ls__decap_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_8 = logic_module( + "sky130_fd_sc_ls__decap_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +decaphe_2 = logic_module( + "sky130_fd_sc_ls__decaphe_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +decaphe_3 = logic_module( + "sky130_fd_sc_ls__decaphe_3", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +decaphe_4 = logic_module( + "sky130_fd_sc_ls__decaphe_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +decaphe_6 = logic_module( + "sky130_fd_sc_ls__decaphe_6", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +decaphe_8 = logic_module( + "sky130_fd_sc_ls__decaphe_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +decaphe_18 = logic_module( + "sky130_fd_sc_ls__decaphe_18", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +decaphetap_2 = logic_module( + "sky130_fd_sc_ls__decaphetap_2", "Low Speed", ["VGND", "VPB", "VPWR"] +) +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"], +) +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"], +) +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"], +) +dfrbp_1 = logic_module( + "sky130_fd_sc_ls__dfrbp_1", + "Low Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrbp_2 = logic_module( + "sky130_fd_sc_ls__dfrbp_2", + "Low Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrtn_1 = logic_module( + "sky130_fd_sc_ls__dfrtn_1", + "Low Speed", + ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_1 = logic_module( + "sky130_fd_sc_ls__dfrtp_1", + "Low Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_2 = logic_module( + "sky130_fd_sc_ls__dfrtp_2", + "Low Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_4 = logic_module( + "sky130_fd_sc_ls__dfrtp_4", + "Low Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfsbp_1 = logic_module( + "sky130_fd_sc_ls__dfsbp_1", + "Low Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfsbp_2 = logic_module( + "sky130_fd_sc_ls__dfsbp_2", + "Low Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfstp_1 = logic_module( + "sky130_fd_sc_ls__dfstp_1", + "Low Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_2 = logic_module( + "sky130_fd_sc_ls__dfstp_2", + "Low Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_4 = logic_module( + "sky130_fd_sc_ls__dfstp_4", + "Low Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxbp_1 = logic_module( + "sky130_fd_sc_ls__dfxbp_1", + "Low Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxbp_2 = logic_module( + "sky130_fd_sc_ls__dfxbp_2", + "Low Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxtp_1 = logic_module( + "sky130_fd_sc_ls__dfxtp_1", + "Low Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_2 = logic_module( + "sky130_fd_sc_ls__dfxtp_2", + "Low Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_4 = logic_module( + "sky130_fd_sc_ls__dfxtp_4", + "Low Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +diode_2 = logic_module( + "sky130_fd_sc_ls__diode_2", "Low Speed", ["DIODE", "VGND", "VNB", "VPB", "VPWR"] +) +dlclkp_1 = logic_module( + "sky130_fd_sc_ls__dlclkp_1", + "Low Speed", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_2 = logic_module( + "sky130_fd_sc_ls__dlclkp_2", + "Low Speed", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_4 = logic_module( + "sky130_fd_sc_ls__dlclkp_4", + "Low Speed", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlrbn_1 = logic_module( + "sky130_fd_sc_ls__dlrbn_1", + "Low Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbn_2 = logic_module( + "sky130_fd_sc_ls__dlrbn_2", + "Low Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_1 = logic_module( + "sky130_fd_sc_ls__dlrbp_1", + "Low Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_2 = logic_module( + "sky130_fd_sc_ls__dlrbp_2", + "Low Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrtn_1 = logic_module( + "sky130_fd_sc_ls__dlrtn_1", + "Low Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_2 = logic_module( + "sky130_fd_sc_ls__dlrtn_2", + "Low Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_4 = logic_module( + "sky130_fd_sc_ls__dlrtn_4", + "Low Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_1 = logic_module( + "sky130_fd_sc_ls__dlrtp_1", + "Low Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_2 = logic_module( + "sky130_fd_sc_ls__dlrtp_2", + "Low Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_4 = logic_module( + "sky130_fd_sc_ls__dlrtp_4", + "Low Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxbn_1 = logic_module( + "sky130_fd_sc_ls__dlxbn_1", + "Low Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbn_2 = logic_module( + "sky130_fd_sc_ls__dlxbn_2", + "Low Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbp_1 = logic_module( + "sky130_fd_sc_ls__dlxbp_1", + "Low Speed", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxtn_1 = logic_module( + "sky130_fd_sc_ls__dlxtn_1", + "Low Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_2 = logic_module( + "sky130_fd_sc_ls__dlxtn_2", + "Low Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_4 = logic_module( + "sky130_fd_sc_ls__dlxtn_4", + "Low Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtp_1 = logic_module( + "sky130_fd_sc_ls__dlxtp_1", + "Low Speed", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlygate4sd1_1 = logic_module( + "sky130_fd_sc_ls__dlygate4sd1_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4sd2_1 = logic_module( + "sky130_fd_sc_ls__dlygate4sd2_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4sd3_1 = logic_module( + "sky130_fd_sc_ls__dlygate4sd3_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s2s_1 = logic_module( + "sky130_fd_sc_ls__dlymetal6s2s_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s4s_1 = logic_module( + "sky130_fd_sc_ls__dlymetal6s4s_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s6s_1 = logic_module( + "sky130_fd_sc_ls__dlymetal6s6s_1", + "Low Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +ebufn_1 = logic_module( + "sky130_fd_sc_ls__ebufn_1", + "Low Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_2 = logic_module( + "sky130_fd_sc_ls__ebufn_2", + "Low Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_4 = logic_module( + "sky130_fd_sc_ls__ebufn_4", + "Low Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_8 = logic_module( + "sky130_fd_sc_ls__ebufn_8", + "Low Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +edfxbp_1 = logic_module( + "sky130_fd_sc_ls__edfxbp_1", + "Low Speed", + ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +edfxtp_1 = logic_module( + "sky130_fd_sc_ls__edfxtp_1", + "Low Speed", + ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +einvn_1 = logic_module( + "sky130_fd_sc_ls__einvn_1", + "Low Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_2 = logic_module( + "sky130_fd_sc_ls__einvn_2", + "Low Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_4 = logic_module( + "sky130_fd_sc_ls__einvn_4", + "Low Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_8 = logic_module( + "sky130_fd_sc_ls__einvn_8", + "Low Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_1 = logic_module( + "sky130_fd_sc_ls__einvp_1", + "Low Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_2 = logic_module( + "sky130_fd_sc_ls__einvp_2", + "Low Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_4 = logic_module( + "sky130_fd_sc_ls__einvp_4", + "Low Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_8 = logic_module( + "sky130_fd_sc_ls__einvp_8", + "Low Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +fa_1 = logic_module( + "sky130_fd_sc_ls__fa_1", + "Low Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_2 = logic_module( + "sky130_fd_sc_ls__fa_2", + "Low Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_4 = logic_module( + "sky130_fd_sc_ls__fa_4", + "Low Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_1 = logic_module( + "sky130_fd_sc_ls__fah_1", + "Low Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_2 = logic_module( + "sky130_fd_sc_ls__fah_2", + "Low Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_4 = logic_module( + "sky130_fd_sc_ls__fah_4", + "Low Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fahcin_1 = logic_module( + "sky130_fd_sc_ls__fahcin_1", + "Low Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fahcon_1 = logic_module( + "sky130_fd_sc_ls__fahcon_1", + "Low Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"], +) +fill_1 = logic_module( + "sky130_fd_sc_ls__fill_1", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_2 = logic_module( + "sky130_fd_sc_ls__fill_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_4 = logic_module( + "sky130_fd_sc_ls__fill_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_8 = logic_module( + "sky130_fd_sc_ls__fill_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_diode_2 = logic_module( + "sky130_fd_sc_ls__fill_diode_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_diode_4 = logic_module( + "sky130_fd_sc_ls__fill_diode_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_diode_8 = logic_module( + "sky130_fd_sc_ls__fill_diode_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +ha_1 = logic_module( + "sky130_fd_sc_ls__ha_1", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_2 = logic_module( + "sky130_fd_sc_ls__ha_2", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_4 = logic_module( + "sky130_fd_sc_ls__ha_4", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +inv_1 = logic_module( + "sky130_fd_sc_ls__inv_1", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_2 = logic_module( + "sky130_fd_sc_ls__inv_2", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_4 = logic_module( + "sky130_fd_sc_ls__inv_4", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_8 = logic_module( + "sky130_fd_sc_ls__inv_8", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +inv_16 = logic_module( + "sky130_fd_sc_ls__inv_16", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] +) +latchupcell = logic_module( + "sky130_fd_sc_ls__latchupcell", "Low Speed", ["VGND", "VPWR"] +) +maj3_1 = logic_module( + "sky130_fd_sc_ls__maj3_1", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_2 = logic_module( + "sky130_fd_sc_ls__maj3_2", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_4 = logic_module( + "sky130_fd_sc_ls__maj3_4", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_1 = logic_module( + "sky130_fd_sc_ls__mux2_1", + "Low Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_2 = logic_module( + "sky130_fd_sc_ls__mux2_2", + "Low Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_4 = logic_module( + "sky130_fd_sc_ls__mux2_4", + "Low Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2i_1 = logic_module( + "sky130_fd_sc_ls__mux2i_1", + "Low Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_2 = logic_module( + "sky130_fd_sc_ls__mux2i_2", + "Low Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_4 = logic_module( + "sky130_fd_sc_ls__mux2i_4", + "Low Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux4_1 = logic_module( + "sky130_fd_sc_ls__mux4_1", + "Low Speed", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_2 = logic_module( + "sky130_fd_sc_ls__mux4_2", + "Low Speed", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_4 = logic_module( + "sky130_fd_sc_ls__mux4_4", + "Low Speed", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +nand2_1 = logic_module( + "sky130_fd_sc_ls__nand2_1", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_2 = logic_module( + "sky130_fd_sc_ls__nand2_2", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_4 = logic_module( + "sky130_fd_sc_ls__nand2_4", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_8 = logic_module( + "sky130_fd_sc_ls__nand2_8", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_1 = logic_module( + "sky130_fd_sc_ls__nand2b_1", + "Low Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_2 = logic_module( + "sky130_fd_sc_ls__nand2b_2", + "Low Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_4 = logic_module( + "sky130_fd_sc_ls__nand2b_4", + "Low Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_1 = logic_module( + "sky130_fd_sc_ls__nand3_1", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_2 = logic_module( + "sky130_fd_sc_ls__nand3_2", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_4 = logic_module( + "sky130_fd_sc_ls__nand3_4", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_1 = logic_module( + "sky130_fd_sc_ls__nand3b_1", + "Low Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_2 = logic_module( + "sky130_fd_sc_ls__nand3b_2", + "Low Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_4 = logic_module( + "sky130_fd_sc_ls__nand3b_4", + "Low Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_1 = logic_module( + "sky130_fd_sc_ls__nand4_1", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_2 = logic_module( + "sky130_fd_sc_ls__nand4_2", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_4 = logic_module( + "sky130_fd_sc_ls__nand4_4", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_1 = logic_module( + "sky130_fd_sc_ls__nand4b_1", + "Low Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_2 = logic_module( + "sky130_fd_sc_ls__nand4b_2", + "Low Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_4 = logic_module( + "sky130_fd_sc_ls__nand4b_4", + "Low Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_1 = logic_module( + "sky130_fd_sc_ls__nand4bb_1", + "Low Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_2 = logic_module( + "sky130_fd_sc_ls__nand4bb_2", + "Low Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_4 = logic_module( + "sky130_fd_sc_ls__nand4bb_4", + "Low Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_1 = logic_module( + "sky130_fd_sc_ls__nor2_1", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_2 = logic_module( + "sky130_fd_sc_ls__nor2_2", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_4 = logic_module( + "sky130_fd_sc_ls__nor2_4", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_8 = logic_module( + "sky130_fd_sc_ls__nor2_8", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_1 = logic_module( + "sky130_fd_sc_ls__nor2b_1", + "Low Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_2 = logic_module( + "sky130_fd_sc_ls__nor2b_2", + "Low Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_4 = logic_module( + "sky130_fd_sc_ls__nor2b_4", + "Low Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_1 = logic_module( + "sky130_fd_sc_ls__nor3_1", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_2 = logic_module( + "sky130_fd_sc_ls__nor3_2", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_4 = logic_module( + "sky130_fd_sc_ls__nor3_4", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_1 = logic_module( + "sky130_fd_sc_ls__nor3b_1", + "Low Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_2 = logic_module( + "sky130_fd_sc_ls__nor3b_2", + "Low Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_4 = logic_module( + "sky130_fd_sc_ls__nor3b_4", + "Low Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_1 = logic_module( + "sky130_fd_sc_ls__nor4_1", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_2 = logic_module( + "sky130_fd_sc_ls__nor4_2", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_4 = logic_module( + "sky130_fd_sc_ls__nor4_4", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_1 = logic_module( + "sky130_fd_sc_ls__nor4b_1", + "Low Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_2 = logic_module( + "sky130_fd_sc_ls__nor4b_2", + "Low Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_4 = logic_module( + "sky130_fd_sc_ls__nor4b_4", + "Low Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_1 = logic_module( + "sky130_fd_sc_ls__nor4bb_1", + "Low Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_2 = logic_module( + "sky130_fd_sc_ls__nor4bb_2", + "Low Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_4 = logic_module( + "sky130_fd_sc_ls__nor4bb_4", + "Low Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2a_1 = logic_module( + "sky130_fd_sc_ls__o2bb2a_1", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_2 = logic_module( + "sky130_fd_sc_ls__o2bb2a_2", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_4 = logic_module( + "sky130_fd_sc_ls__o2bb2a_4", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2ai_1 = logic_module( + "sky130_fd_sc_ls__o2bb2ai_1", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_2 = logic_module( + "sky130_fd_sc_ls__o2bb2ai_2", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_4 = logic_module( + "sky130_fd_sc_ls__o2bb2ai_4", + "Low Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21a_1 = logic_module( + "sky130_fd_sc_ls__o21a_1", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_2 = logic_module( + "sky130_fd_sc_ls__o21a_2", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_4 = logic_module( + "sky130_fd_sc_ls__o21a_4", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ai_1 = logic_module( + "sky130_fd_sc_ls__o21ai_1", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_2 = logic_module( + "sky130_fd_sc_ls__o21ai_2", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_4 = logic_module( + "sky130_fd_sc_ls__o21ai_4", + "Low Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ba_1 = logic_module( + "sky130_fd_sc_ls__o21ba_1", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_2 = logic_module( + "sky130_fd_sc_ls__o21ba_2", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_4 = logic_module( + "sky130_fd_sc_ls__o21ba_4", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21bai_1 = logic_module( + "sky130_fd_sc_ls__o21bai_1", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_2 = logic_module( + "sky130_fd_sc_ls__o21bai_2", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_4 = logic_module( + "sky130_fd_sc_ls__o21bai_4", + "Low Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22a_1 = logic_module( + "sky130_fd_sc_ls__o22a_1", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_2 = logic_module( + "sky130_fd_sc_ls__o22a_2", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_4 = logic_module( + "sky130_fd_sc_ls__o22a_4", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22ai_1 = logic_module( + "sky130_fd_sc_ls__o22ai_1", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_2 = logic_module( + "sky130_fd_sc_ls__o22ai_2", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_4 = logic_module( + "sky130_fd_sc_ls__o22ai_4", + "Low Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31a_1 = logic_module( + "sky130_fd_sc_ls__o31a_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_2 = logic_module( + "sky130_fd_sc_ls__o31a_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_4 = logic_module( + "sky130_fd_sc_ls__o31a_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31ai_1 = logic_module( + "sky130_fd_sc_ls__o31ai_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_2 = logic_module( + "sky130_fd_sc_ls__o31ai_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_4 = logic_module( + "sky130_fd_sc_ls__o31ai_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32a_1 = logic_module( + "sky130_fd_sc_ls__o32a_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_2 = logic_module( + "sky130_fd_sc_ls__o32a_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_4 = logic_module( + "sky130_fd_sc_ls__o32a_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32ai_1 = logic_module( + "sky130_fd_sc_ls__o32ai_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_2 = logic_module( + "sky130_fd_sc_ls__o32ai_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_4 = logic_module( + "sky130_fd_sc_ls__o32ai_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41a_1 = logic_module( + "sky130_fd_sc_ls__o41a_1", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_2 = logic_module( + "sky130_fd_sc_ls__o41a_2", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_4 = logic_module( + "sky130_fd_sc_ls__o41a_4", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41ai_1 = logic_module( + "sky130_fd_sc_ls__o41ai_1", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_2 = logic_module( + "sky130_fd_sc_ls__o41ai_2", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_4 = logic_module( + "sky130_fd_sc_ls__o41ai_4", + "Low Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211a_1 = logic_module( + "sky130_fd_sc_ls__o211a_1", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_2 = logic_module( + "sky130_fd_sc_ls__o211a_2", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_4 = logic_module( + "sky130_fd_sc_ls__o211a_4", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211ai_1 = logic_module( + "sky130_fd_sc_ls__o211ai_1", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_2 = logic_module( + "sky130_fd_sc_ls__o211ai_2", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_4 = logic_module( + "sky130_fd_sc_ls__o211ai_4", + "Low Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221a_1 = logic_module( + "sky130_fd_sc_ls__o221a_1", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_2 = logic_module( + "sky130_fd_sc_ls__o221a_2", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_4 = logic_module( + "sky130_fd_sc_ls__o221a_4", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221ai_1 = logic_module( + "sky130_fd_sc_ls__o221ai_1", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_2 = logic_module( + "sky130_fd_sc_ls__o221ai_2", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_4 = logic_module( + "sky130_fd_sc_ls__o221ai_4", + "Low Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311a_1 = logic_module( + "sky130_fd_sc_ls__o311a_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_2 = logic_module( + "sky130_fd_sc_ls__o311a_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_4 = logic_module( + "sky130_fd_sc_ls__o311a_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311ai_1 = logic_module( + "sky130_fd_sc_ls__o311ai_1", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_2 = logic_module( + "sky130_fd_sc_ls__o311ai_2", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_4 = logic_module( + "sky130_fd_sc_ls__o311ai_4", + "Low Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111a_1 = logic_module( + "sky130_fd_sc_ls__o2111a_1", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_2 = logic_module( + "sky130_fd_sc_ls__o2111a_2", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_4 = logic_module( + "sky130_fd_sc_ls__o2111a_4", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111ai_1 = logic_module( + "sky130_fd_sc_ls__o2111ai_1", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_2 = logic_module( + "sky130_fd_sc_ls__o2111ai_2", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_4 = logic_module( + "sky130_fd_sc_ls__o2111ai_4", + "Low Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +or2_1 = logic_module( + "sky130_fd_sc_ls__or2_1", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_2 = logic_module( + "sky130_fd_sc_ls__or2_2", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_4 = logic_module( + "sky130_fd_sc_ls__or2_4", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_1 = logic_module( + "sky130_fd_sc_ls__or2b_1", + "Low Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_2 = logic_module( + "sky130_fd_sc_ls__or2b_2", + "Low Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_4 = logic_module( + "sky130_fd_sc_ls__or2b_4", + "Low Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_1 = logic_module( + "sky130_fd_sc_ls__or3_1", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_2 = logic_module( + "sky130_fd_sc_ls__or3_2", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_4 = logic_module( + "sky130_fd_sc_ls__or3_4", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_1 = logic_module( + "sky130_fd_sc_ls__or3b_1", + "Low Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_2 = logic_module( + "sky130_fd_sc_ls__or3b_2", + "Low Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_4 = logic_module( + "sky130_fd_sc_ls__or3b_4", + "Low Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_1 = logic_module( + "sky130_fd_sc_ls__or4_1", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_2 = logic_module( + "sky130_fd_sc_ls__or4_2", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_4 = logic_module( + "sky130_fd_sc_ls__or4_4", + "Low Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_1 = logic_module( + "sky130_fd_sc_ls__or4b_1", + "Low Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_2 = logic_module( + "sky130_fd_sc_ls__or4b_2", + "Low Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_4 = logic_module( + "sky130_fd_sc_ls__or4b_4", + "Low Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_1 = logic_module( + "sky130_fd_sc_ls__or4bb_1", + "Low Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_2 = logic_module( + "sky130_fd_sc_ls__or4bb_2", + "Low Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_4 = logic_module( + "sky130_fd_sc_ls__or4bb_4", + "Low Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +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"], +) +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"], +) +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", + ], +) +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"], +) +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"], +) +sdfrtn_1 = logic_module( + "sky130_fd_sc_ls__sdfrtn_1", + "Low Speed", + ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_1 = logic_module( + "sky130_fd_sc_ls__sdfrtp_1", + "Low Speed", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_2 = logic_module( + "sky130_fd_sc_ls__sdfrtp_2", + "Low Speed", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_4 = logic_module( + "sky130_fd_sc_ls__sdfrtp_4", + "Low Speed", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +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"], +) +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"], +) +sdfstp_1 = logic_module( + "sky130_fd_sc_ls__sdfstp_1", + "Low Speed", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_2 = logic_module( + "sky130_fd_sc_ls__sdfstp_2", + "Low Speed", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_4 = logic_module( + "sky130_fd_sc_ls__sdfstp_4", + "Low Speed", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxbp_1 = logic_module( + "sky130_fd_sc_ls__sdfxbp_1", + "Low Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxbp_2 = logic_module( + "sky130_fd_sc_ls__sdfxbp_2", + "Low Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxtp_1 = logic_module( + "sky130_fd_sc_ls__sdfxtp_1", + "Low Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_2 = logic_module( + "sky130_fd_sc_ls__sdfxtp_2", + "Low Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_4 = logic_module( + "sky130_fd_sc_ls__sdfxtp_4", + "Low Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdlclkp_1 = logic_module( + "sky130_fd_sc_ls__sdlclkp_1", + "Low Speed", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_2 = logic_module( + "sky130_fd_sc_ls__sdlclkp_2", + "Low Speed", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_4 = logic_module( + "sky130_fd_sc_ls__sdlclkp_4", + "Low Speed", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sedfxbp_1 = logic_module( + "sky130_fd_sc_ls__sedfxbp_1", + "Low Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sedfxbp_2 = logic_module( + "sky130_fd_sc_ls__sedfxbp_2", + "Low Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sedfxtp_1 = logic_module( + "sky130_fd_sc_ls__sedfxtp_1", + "Low Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sedfxtp_2 = logic_module( + "sky130_fd_sc_ls__sedfxtp_2", + "Low Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sedfxtp_4 = logic_module( + "sky130_fd_sc_ls__sedfxtp_4", + "Low Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +tap_1 = logic_module( + "sky130_fd_sc_ls__tap_1", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +tap_2 = logic_module( + "sky130_fd_sc_ls__tap_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +tapmet1_2 = logic_module( + "sky130_fd_sc_ls__tapmet1_2", "Low Speed", ["VGND", "VPB", "VPWR"] +) +tapvgnd2_1 = logic_module( + "sky130_fd_sc_ls__tapvgnd2_1", "Low Speed", ["VGND", "VPB", "VPWR"] +) +tapvgnd_1 = logic_module( + "sky130_fd_sc_ls__tapvgnd_1", "Low Speed", ["VGND", "VPB", "VPWR"] +) +tapvgndnovpb_1 = logic_module( + "sky130_fd_sc_ls__tapvgndnovpb_1", "Low Speed", ["VGND", "VPWR"] +) +tapvpwrvgnd_1 = logic_module( + "sky130_fd_sc_ls__tapvpwrvgnd_1", "Low Speed", ["VGND", "VPWR"] +) +xnor2_1 = logic_module( + "sky130_fd_sc_ls__xnor2_1", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_2 = logic_module( + "sky130_fd_sc_ls__xnor2_2", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_4 = logic_module( + "sky130_fd_sc_ls__xnor2_4", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor3_1 = logic_module( + "sky130_fd_sc_ls__xnor3_1", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_2 = logic_module( + "sky130_fd_sc_ls__xnor3_2", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_4 = logic_module( + "sky130_fd_sc_ls__xnor3_4", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_1 = logic_module( + "sky130_fd_sc_ls__xor2_1", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_2 = logic_module( + "sky130_fd_sc_ls__xor2_2", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_4 = logic_module( + "sky130_fd_sc_ls__xor2_4", + "Low Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_1 = logic_module( + "sky130_fd_sc_ls__xor3_1", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_2 = logic_module( + "sky130_fd_sc_ls__xor3_2", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_4 = logic_module( + "sky130_fd_sc_ls__xor3_4", + "Low Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) diff --git a/sky130/hdl21/sky130_gf/digital_cells/medium_speed.py b/sky130/hdl21/sky130_gf/digital_cells/medium_speed.py new file mode 100644 index 000000000..8f865ed4e --- /dev/null +++ b/sky130/hdl21/sky130_gf/digital_cells/medium_speed.py @@ -0,0 +1,1937 @@ +from ..pdk_data import logic_module + +a2bb2o_1 = logic_module( + "sky130_fd_sc_ms__a2bb2o_1", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_2 = logic_module( + "sky130_fd_sc_ms__a2bb2o_2", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2o_4 = logic_module( + "sky130_fd_sc_ms__a2bb2o_4", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2bb2oi_1 = logic_module( + "sky130_fd_sc_ms__a2bb2oi_1", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_2 = logic_module( + "sky130_fd_sc_ms__a2bb2oi_2", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2bb2oi_4 = logic_module( + "sky130_fd_sc_ms__a2bb2oi_4", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21bo_1 = logic_module( + "sky130_fd_sc_ms__a21bo_1", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_2 = logic_module( + "sky130_fd_sc_ms__a21bo_2", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21bo_4 = logic_module( + "sky130_fd_sc_ms__a21bo_4", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21boi_1 = logic_module( + "sky130_fd_sc_ms__a21boi_1", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_2 = logic_module( + "sky130_fd_sc_ms__a21boi_2", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21boi_4 = logic_module( + "sky130_fd_sc_ms__a21boi_4", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21o_1 = logic_module( + "sky130_fd_sc_ms__a21o_1", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_2 = logic_module( + "sky130_fd_sc_ms__a21o_2", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21o_4 = logic_module( + "sky130_fd_sc_ms__a21o_4", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a21oi_1 = logic_module( + "sky130_fd_sc_ms__a21oi_1", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_2 = logic_module( + "sky130_fd_sc_ms__a21oi_2", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a21oi_4 = logic_module( + "sky130_fd_sc_ms__a21oi_4", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22o_1 = logic_module( + "sky130_fd_sc_ms__a22o_1", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_2 = logic_module( + "sky130_fd_sc_ms__a22o_2", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22o_4 = logic_module( + "sky130_fd_sc_ms__a22o_4", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a22oi_1 = logic_module( + "sky130_fd_sc_ms__a22oi_1", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_2 = logic_module( + "sky130_fd_sc_ms__a22oi_2", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a22oi_4 = logic_module( + "sky130_fd_sc_ms__a22oi_4", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31o_1 = logic_module( + "sky130_fd_sc_ms__a31o_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_2 = logic_module( + "sky130_fd_sc_ms__a31o_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31o_4 = logic_module( + "sky130_fd_sc_ms__a31o_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a31oi_1 = logic_module( + "sky130_fd_sc_ms__a31oi_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_2 = logic_module( + "sky130_fd_sc_ms__a31oi_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a31oi_4 = logic_module( + "sky130_fd_sc_ms__a31oi_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32o_1 = logic_module( + "sky130_fd_sc_ms__a32o_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_2 = logic_module( + "sky130_fd_sc_ms__a32o_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32o_4 = logic_module( + "sky130_fd_sc_ms__a32o_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a32oi_1 = logic_module( + "sky130_fd_sc_ms__a32oi_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_2 = logic_module( + "sky130_fd_sc_ms__a32oi_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a32oi_4 = logic_module( + "sky130_fd_sc_ms__a32oi_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41o_1 = logic_module( + "sky130_fd_sc_ms__a41o_1", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_2 = logic_module( + "sky130_fd_sc_ms__a41o_2", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41o_4 = logic_module( + "sky130_fd_sc_ms__a41o_4", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a41oi_1 = logic_module( + "sky130_fd_sc_ms__a41oi_1", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_2 = logic_module( + "sky130_fd_sc_ms__a41oi_2", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a41oi_4 = logic_module( + "sky130_fd_sc_ms__a41oi_4", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211o_1 = logic_module( + "sky130_fd_sc_ms__a211o_1", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_2 = logic_module( + "sky130_fd_sc_ms__a211o_2", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211o_4 = logic_module( + "sky130_fd_sc_ms__a211o_4", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a211oi_1 = logic_module( + "sky130_fd_sc_ms__a211oi_1", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_2 = logic_module( + "sky130_fd_sc_ms__a211oi_2", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a211oi_4 = logic_module( + "sky130_fd_sc_ms__a211oi_4", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221o_1 = logic_module( + "sky130_fd_sc_ms__a221o_1", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_2 = logic_module( + "sky130_fd_sc_ms__a221o_2", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221o_4 = logic_module( + "sky130_fd_sc_ms__a221o_4", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a221oi_1 = logic_module( + "sky130_fd_sc_ms__a221oi_1", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_2 = logic_module( + "sky130_fd_sc_ms__a221oi_2", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a221oi_4 = logic_module( + "sky130_fd_sc_ms__a221oi_4", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a222o_1 = logic_module( + "sky130_fd_sc_ms__a222o_1", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a222o_2 = logic_module( + "sky130_fd_sc_ms__a222o_2", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a222oi_1 = logic_module( + "sky130_fd_sc_ms__a222oi_1", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a222oi_2 = logic_module( + "sky130_fd_sc_ms__a222oi_2", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311o_1 = logic_module( + "sky130_fd_sc_ms__a311o_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_2 = logic_module( + "sky130_fd_sc_ms__a311o_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311o_4 = logic_module( + "sky130_fd_sc_ms__a311o_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a311oi_1 = logic_module( + "sky130_fd_sc_ms__a311oi_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_2 = logic_module( + "sky130_fd_sc_ms__a311oi_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a311oi_4 = logic_module( + "sky130_fd_sc_ms__a311oi_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111o_1 = logic_module( + "sky130_fd_sc_ms__a2111o_1", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_2 = logic_module( + "sky130_fd_sc_ms__a2111o_2", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111o_4 = logic_module( + "sky130_fd_sc_ms__a2111o_4", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +a2111oi_1 = logic_module( + "sky130_fd_sc_ms__a2111oi_1", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_2 = logic_module( + "sky130_fd_sc_ms__a2111oi_2", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +a2111oi_4 = logic_module( + "sky130_fd_sc_ms__a2111oi_4", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +and2_1 = logic_module( + "sky130_fd_sc_ms__and2_1", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_2 = logic_module( + "sky130_fd_sc_ms__and2_2", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2_4 = logic_module( + "sky130_fd_sc_ms__and2_4", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_1 = logic_module( + "sky130_fd_sc_ms__and2b_1", + "Medium Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_2 = logic_module( + "sky130_fd_sc_ms__and2b_2", + "Medium Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and2b_4 = logic_module( + "sky130_fd_sc_ms__and2b_4", + "Medium Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_1 = logic_module( + "sky130_fd_sc_ms__and3_1", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_2 = logic_module( + "sky130_fd_sc_ms__and3_2", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3_4 = logic_module( + "sky130_fd_sc_ms__and3_4", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_1 = logic_module( + "sky130_fd_sc_ms__and3b_1", + "Medium Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_2 = logic_module( + "sky130_fd_sc_ms__and3b_2", + "Medium Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and3b_4 = logic_module( + "sky130_fd_sc_ms__and3b_4", + "Medium Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_1 = logic_module( + "sky130_fd_sc_ms__and4_1", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_2 = logic_module( + "sky130_fd_sc_ms__and4_2", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4_4 = logic_module( + "sky130_fd_sc_ms__and4_4", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_1 = logic_module( + "sky130_fd_sc_ms__and4b_1", + "Medium Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_2 = logic_module( + "sky130_fd_sc_ms__and4b_2", + "Medium Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4b_4 = logic_module( + "sky130_fd_sc_ms__and4b_4", + "Medium Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_1 = logic_module( + "sky130_fd_sc_ms__and4bb_1", + "Medium Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_2 = logic_module( + "sky130_fd_sc_ms__and4bb_2", + "Medium Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +and4bb_4 = logic_module( + "sky130_fd_sc_ms__and4bb_4", + "Medium Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_1 = logic_module( + "sky130_fd_sc_ms__buf_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_2 = logic_module( + "sky130_fd_sc_ms__buf_2", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_4 = logic_module( + "sky130_fd_sc_ms__buf_4", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_8 = logic_module( + "sky130_fd_sc_ms__buf_8", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +buf_16 = logic_module( + "sky130_fd_sc_ms__buf_16", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufbuf_8 = logic_module( + "sky130_fd_sc_ms__bufbuf_8", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufbuf_16 = logic_module( + "sky130_fd_sc_ms__bufbuf_16", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +bufinv_8 = logic_module( + "sky130_fd_sc_ms__bufinv_8", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +bufinv_16 = logic_module( + "sky130_fd_sc_ms__bufinv_16", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkbuf_1 = logic_module( + "sky130_fd_sc_ms__clkbuf_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_2 = logic_module( + "sky130_fd_sc_ms__clkbuf_2", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_4 = logic_module( + "sky130_fd_sc_ms__clkbuf_4", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_8 = logic_module( + "sky130_fd_sc_ms__clkbuf_8", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkbuf_16 = logic_module( + "sky130_fd_sc_ms__clkbuf_16", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +clkdlyinv3sd1_1 = logic_module( + "sky130_fd_sc_ms__clkdlyinv3sd1_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv3sd2_1 = logic_module( + "sky130_fd_sc_ms__clkdlyinv3sd2_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv3sd3_1 = logic_module( + "sky130_fd_sc_ms__clkdlyinv3sd3_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv5sd1_1 = logic_module( + "sky130_fd_sc_ms__clkdlyinv5sd1_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv5sd2_1 = logic_module( + "sky130_fd_sc_ms__clkdlyinv5sd2_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkdlyinv5sd3_1 = logic_module( + "sky130_fd_sc_ms__clkdlyinv5sd3_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_1 = logic_module( + "sky130_fd_sc_ms__clkinv_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_2 = logic_module( + "sky130_fd_sc_ms__clkinv_2", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_4 = logic_module( + "sky130_fd_sc_ms__clkinv_4", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_8 = logic_module( + "sky130_fd_sc_ms__clkinv_8", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +clkinv_16 = logic_module( + "sky130_fd_sc_ms__clkinv_16", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +conb_1 = logic_module( + "sky130_fd_sc_ms__conb_1", + "Medium Speed", + ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], +) +decap_4 = logic_module( + "sky130_fd_sc_ms__decap_4", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +decap_8 = logic_module( + "sky130_fd_sc_ms__decap_8", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +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"], +) +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"], +) +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"], +) +dfrbp_1 = logic_module( + "sky130_fd_sc_ms__dfrbp_1", + "Medium Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrbp_2 = logic_module( + "sky130_fd_sc_ms__dfrbp_2", + "Medium Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfrtn_1 = logic_module( + "sky130_fd_sc_ms__dfrtn_1", + "Medium Speed", + ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_1 = logic_module( + "sky130_fd_sc_ms__dfrtp_1", + "Medium Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_2 = logic_module( + "sky130_fd_sc_ms__dfrtp_2", + "Medium Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfrtp_4 = logic_module( + "sky130_fd_sc_ms__dfrtp_4", + "Medium Speed", + ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfsbp_1 = logic_module( + "sky130_fd_sc_ms__dfsbp_1", + "Medium Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfsbp_2 = logic_module( + "sky130_fd_sc_ms__dfsbp_2", + "Medium Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfstp_1 = logic_module( + "sky130_fd_sc_ms__dfstp_1", + "Medium Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_2 = logic_module( + "sky130_fd_sc_ms__dfstp_2", + "Medium Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfstp_4 = logic_module( + "sky130_fd_sc_ms__dfstp_4", + "Medium Speed", + ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxbp_1 = logic_module( + "sky130_fd_sc_ms__dfxbp_1", + "Medium Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxbp_2 = logic_module( + "sky130_fd_sc_ms__dfxbp_2", + "Medium Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dfxtp_1 = logic_module( + "sky130_fd_sc_ms__dfxtp_1", + "Medium Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_2 = logic_module( + "sky130_fd_sc_ms__dfxtp_2", + "Medium Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dfxtp_4 = logic_module( + "sky130_fd_sc_ms__dfxtp_4", + "Medium Speed", + ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +diode_2 = logic_module( + "sky130_fd_sc_ms__diode_2", + "Medium Speed", + ["DIODE", "VGND", "VNB", "VPB", "VPWR"], +) +dlclkp_1 = logic_module( + "sky130_fd_sc_ms__dlclkp_1", + "Medium Speed", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_2 = logic_module( + "sky130_fd_sc_ms__dlclkp_2", + "Medium Speed", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlclkp_4 = logic_module( + "sky130_fd_sc_ms__dlclkp_4", + "Medium Speed", + ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +dlrbn_1 = logic_module( + "sky130_fd_sc_ms__dlrbn_1", + "Medium Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbn_2 = logic_module( + "sky130_fd_sc_ms__dlrbn_2", + "Medium Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_1 = logic_module( + "sky130_fd_sc_ms__dlrbp_1", + "Medium Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrbp_2 = logic_module( + "sky130_fd_sc_ms__dlrbp_2", + "Medium Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlrtn_1 = logic_module( + "sky130_fd_sc_ms__dlrtn_1", + "Medium Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_2 = logic_module( + "sky130_fd_sc_ms__dlrtn_2", + "Medium Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtn_4 = logic_module( + "sky130_fd_sc_ms__dlrtn_4", + "Medium Speed", + ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_1 = logic_module( + "sky130_fd_sc_ms__dlrtp_1", + "Medium Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_2 = logic_module( + "sky130_fd_sc_ms__dlrtp_2", + "Medium Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlrtp_4 = logic_module( + "sky130_fd_sc_ms__dlrtp_4", + "Medium Speed", + ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxbn_1 = logic_module( + "sky130_fd_sc_ms__dlxbn_1", + "Medium Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbn_2 = logic_module( + "sky130_fd_sc_ms__dlxbn_2", + "Medium Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxbp_1 = logic_module( + "sky130_fd_sc_ms__dlxbp_1", + "Medium Speed", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +dlxtn_1 = logic_module( + "sky130_fd_sc_ms__dlxtn_1", + "Medium Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_2 = logic_module( + "sky130_fd_sc_ms__dlxtn_2", + "Medium Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtn_4 = logic_module( + "sky130_fd_sc_ms__dlxtn_4", + "Medium Speed", + ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlxtp_1 = logic_module( + "sky130_fd_sc_ms__dlxtp_1", + "Medium Speed", + ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +dlygate4sd1_1 = logic_module( + "sky130_fd_sc_ms__dlygate4sd1_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4sd2_1 = logic_module( + "sky130_fd_sc_ms__dlygate4sd2_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlygate4sd3_1 = logic_module( + "sky130_fd_sc_ms__dlygate4sd3_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s2s_1 = logic_module( + "sky130_fd_sc_ms__dlymetal6s2s_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s4s_1 = logic_module( + "sky130_fd_sc_ms__dlymetal6s4s_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +dlymetal6s6s_1 = logic_module( + "sky130_fd_sc_ms__dlymetal6s6s_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "X"], +) +ebufn_1 = logic_module( + "sky130_fd_sc_ms__ebufn_1", + "Medium Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_2 = logic_module( + "sky130_fd_sc_ms__ebufn_2", + "Medium Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_4 = logic_module( + "sky130_fd_sc_ms__ebufn_4", + "Medium Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +ebufn_8 = logic_module( + "sky130_fd_sc_ms__ebufn_8", + "Medium Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +edfxbp_1 = logic_module( + "sky130_fd_sc_ms__edfxbp_1", + "Medium Speed", + ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +edfxtp_1 = logic_module( + "sky130_fd_sc_ms__edfxtp_1", + "Medium Speed", + ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +einvn_1 = logic_module( + "sky130_fd_sc_ms__einvn_1", + "Medium Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_2 = logic_module( + "sky130_fd_sc_ms__einvn_2", + "Medium Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_4 = logic_module( + "sky130_fd_sc_ms__einvn_4", + "Medium Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvn_8 = logic_module( + "sky130_fd_sc_ms__einvn_8", + "Medium Speed", + ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_1 = logic_module( + "sky130_fd_sc_ms__einvp_1", + "Medium Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_2 = logic_module( + "sky130_fd_sc_ms__einvp_2", + "Medium Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_4 = logic_module( + "sky130_fd_sc_ms__einvp_4", + "Medium Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +einvp_8 = logic_module( + "sky130_fd_sc_ms__einvp_8", + "Medium Speed", + ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], +) +fa_1 = logic_module( + "sky130_fd_sc_ms__fa_1", + "Medium Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_2 = logic_module( + "sky130_fd_sc_ms__fa_2", + "Medium Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fa_4 = logic_module( + "sky130_fd_sc_ms__fa_4", + "Medium Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_1 = logic_module( + "sky130_fd_sc_ms__fah_1", + "Medium Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_2 = logic_module( + "sky130_fd_sc_ms__fah_2", + "Medium Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fah_4 = logic_module( + "sky130_fd_sc_ms__fah_4", + "Medium Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fahcin_1 = logic_module( + "sky130_fd_sc_ms__fahcin_1", + "Medium Speed", + ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +fahcon_1 = logic_module( + "sky130_fd_sc_ms__fahcon_1", + "Medium Speed", + ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"], +) +fill_1 = logic_module( + "sky130_fd_sc_ms__fill_1", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_2 = logic_module( + "sky130_fd_sc_ms__fill_2", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_4 = logic_module( + "sky130_fd_sc_ms__fill_4", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_8 = logic_module( + "sky130_fd_sc_ms__fill_8", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_diode_2 = logic_module( + "sky130_fd_sc_ms__fill_diode_2", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_diode_4 = logic_module( + "sky130_fd_sc_ms__fill_diode_4", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +fill_diode_8 = logic_module( + "sky130_fd_sc_ms__fill_diode_8", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +ha_1 = logic_module( + "sky130_fd_sc_ms__ha_1", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_2 = logic_module( + "sky130_fd_sc_ms__ha_2", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +ha_4 = logic_module( + "sky130_fd_sc_ms__ha_4", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], +) +inv_1 = logic_module( + "sky130_fd_sc_ms__inv_1", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_2 = logic_module( + "sky130_fd_sc_ms__inv_2", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_4 = logic_module( + "sky130_fd_sc_ms__inv_4", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_8 = logic_module( + "sky130_fd_sc_ms__inv_8", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +inv_16 = logic_module( + "sky130_fd_sc_ms__inv_16", + "Medium Speed", + ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +latchupcell = logic_module( + "sky130_fd_sc_ms__latchupcell", "Medium Speed", ["VGND", "VPWR"] +) +maj3_1 = logic_module( + "sky130_fd_sc_ms__maj3_1", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_2 = logic_module( + "sky130_fd_sc_ms__maj3_2", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +maj3_4 = logic_module( + "sky130_fd_sc_ms__maj3_4", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_1 = logic_module( + "sky130_fd_sc_ms__mux2_1", + "Medium Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_2 = logic_module( + "sky130_fd_sc_ms__mux2_2", + "Medium Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2_4 = logic_module( + "sky130_fd_sc_ms__mux2_4", + "Medium Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux2i_1 = logic_module( + "sky130_fd_sc_ms__mux2i_1", + "Medium Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_2 = logic_module( + "sky130_fd_sc_ms__mux2i_2", + "Medium Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux2i_4 = logic_module( + "sky130_fd_sc_ms__mux2i_4", + "Medium Speed", + ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +mux4_1 = logic_module( + "sky130_fd_sc_ms__mux4_1", + "Medium Speed", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_2 = logic_module( + "sky130_fd_sc_ms__mux4_2", + "Medium Speed", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +mux4_4 = logic_module( + "sky130_fd_sc_ms__mux4_4", + "Medium Speed", + ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +nand2_1 = logic_module( + "sky130_fd_sc_ms__nand2_1", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_2 = logic_module( + "sky130_fd_sc_ms__nand2_2", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_4 = logic_module( + "sky130_fd_sc_ms__nand2_4", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2_8 = logic_module( + "sky130_fd_sc_ms__nand2_8", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_1 = logic_module( + "sky130_fd_sc_ms__nand2b_1", + "Medium Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_2 = logic_module( + "sky130_fd_sc_ms__nand2b_2", + "Medium Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand2b_4 = logic_module( + "sky130_fd_sc_ms__nand2b_4", + "Medium Speed", + ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_1 = logic_module( + "sky130_fd_sc_ms__nand3_1", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_2 = logic_module( + "sky130_fd_sc_ms__nand3_2", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3_4 = logic_module( + "sky130_fd_sc_ms__nand3_4", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_1 = logic_module( + "sky130_fd_sc_ms__nand3b_1", + "Medium Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_2 = logic_module( + "sky130_fd_sc_ms__nand3b_2", + "Medium Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand3b_4 = logic_module( + "sky130_fd_sc_ms__nand3b_4", + "Medium Speed", + ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_1 = logic_module( + "sky130_fd_sc_ms__nand4_1", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_2 = logic_module( + "sky130_fd_sc_ms__nand4_2", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4_4 = logic_module( + "sky130_fd_sc_ms__nand4_4", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_1 = logic_module( + "sky130_fd_sc_ms__nand4b_1", + "Medium Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_2 = logic_module( + "sky130_fd_sc_ms__nand4b_2", + "Medium Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4b_4 = logic_module( + "sky130_fd_sc_ms__nand4b_4", + "Medium Speed", + ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_1 = logic_module( + "sky130_fd_sc_ms__nand4bb_1", + "Medium Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_2 = logic_module( + "sky130_fd_sc_ms__nand4bb_2", + "Medium Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nand4bb_4 = logic_module( + "sky130_fd_sc_ms__nand4bb_4", + "Medium Speed", + ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_1 = logic_module( + "sky130_fd_sc_ms__nor2_1", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_2 = logic_module( + "sky130_fd_sc_ms__nor2_2", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_4 = logic_module( + "sky130_fd_sc_ms__nor2_4", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2_8 = logic_module( + "sky130_fd_sc_ms__nor2_8", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_1 = logic_module( + "sky130_fd_sc_ms__nor2b_1", + "Medium Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_2 = logic_module( + "sky130_fd_sc_ms__nor2b_2", + "Medium Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor2b_4 = logic_module( + "sky130_fd_sc_ms__nor2b_4", + "Medium Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_1 = logic_module( + "sky130_fd_sc_ms__nor3_1", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_2 = logic_module( + "sky130_fd_sc_ms__nor3_2", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3_4 = logic_module( + "sky130_fd_sc_ms__nor3_4", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_1 = logic_module( + "sky130_fd_sc_ms__nor3b_1", + "Medium Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_2 = logic_module( + "sky130_fd_sc_ms__nor3b_2", + "Medium Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor3b_4 = logic_module( + "sky130_fd_sc_ms__nor3b_4", + "Medium Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_1 = logic_module( + "sky130_fd_sc_ms__nor4_1", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_2 = logic_module( + "sky130_fd_sc_ms__nor4_2", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4_4 = logic_module( + "sky130_fd_sc_ms__nor4_4", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_1 = logic_module( + "sky130_fd_sc_ms__nor4b_1", + "Medium Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_2 = logic_module( + "sky130_fd_sc_ms__nor4b_2", + "Medium Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4b_4 = logic_module( + "sky130_fd_sc_ms__nor4b_4", + "Medium Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_1 = logic_module( + "sky130_fd_sc_ms__nor4bb_1", + "Medium Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_2 = logic_module( + "sky130_fd_sc_ms__nor4bb_2", + "Medium Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +nor4bb_4 = logic_module( + "sky130_fd_sc_ms__nor4bb_4", + "Medium Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2a_1 = logic_module( + "sky130_fd_sc_ms__o2bb2a_1", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_2 = logic_module( + "sky130_fd_sc_ms__o2bb2a_2", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2a_4 = logic_module( + "sky130_fd_sc_ms__o2bb2a_4", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2bb2ai_1 = logic_module( + "sky130_fd_sc_ms__o2bb2ai_1", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_2 = logic_module( + "sky130_fd_sc_ms__o2bb2ai_2", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2bb2ai_4 = logic_module( + "sky130_fd_sc_ms__o2bb2ai_4", + "Medium Speed", + ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21a_1 = logic_module( + "sky130_fd_sc_ms__o21a_1", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_2 = logic_module( + "sky130_fd_sc_ms__o21a_2", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21a_4 = logic_module( + "sky130_fd_sc_ms__o21a_4", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ai_1 = logic_module( + "sky130_fd_sc_ms__o21ai_1", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_2 = logic_module( + "sky130_fd_sc_ms__o21ai_2", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ai_4 = logic_module( + "sky130_fd_sc_ms__o21ai_4", + "Medium Speed", + ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21ba_1 = logic_module( + "sky130_fd_sc_ms__o21ba_1", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_2 = logic_module( + "sky130_fd_sc_ms__o21ba_2", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21ba_4 = logic_module( + "sky130_fd_sc_ms__o21ba_4", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o21bai_1 = logic_module( + "sky130_fd_sc_ms__o21bai_1", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_2 = logic_module( + "sky130_fd_sc_ms__o21bai_2", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o21bai_4 = logic_module( + "sky130_fd_sc_ms__o21bai_4", + "Medium Speed", + ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22a_1 = logic_module( + "sky130_fd_sc_ms__o22a_1", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_2 = logic_module( + "sky130_fd_sc_ms__o22a_2", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22a_4 = logic_module( + "sky130_fd_sc_ms__o22a_4", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o22ai_1 = logic_module( + "sky130_fd_sc_ms__o22ai_1", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_2 = logic_module( + "sky130_fd_sc_ms__o22ai_2", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o22ai_4 = logic_module( + "sky130_fd_sc_ms__o22ai_4", + "Medium Speed", + ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31a_1 = logic_module( + "sky130_fd_sc_ms__o31a_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_2 = logic_module( + "sky130_fd_sc_ms__o31a_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31a_4 = logic_module( + "sky130_fd_sc_ms__o31a_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o31ai_1 = logic_module( + "sky130_fd_sc_ms__o31ai_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_2 = logic_module( + "sky130_fd_sc_ms__o31ai_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o31ai_4 = logic_module( + "sky130_fd_sc_ms__o31ai_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32a_1 = logic_module( + "sky130_fd_sc_ms__o32a_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_2 = logic_module( + "sky130_fd_sc_ms__o32a_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32a_4 = logic_module( + "sky130_fd_sc_ms__o32a_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o32ai_1 = logic_module( + "sky130_fd_sc_ms__o32ai_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_2 = logic_module( + "sky130_fd_sc_ms__o32ai_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o32ai_4 = logic_module( + "sky130_fd_sc_ms__o32ai_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41a_1 = logic_module( + "sky130_fd_sc_ms__o41a_1", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_2 = logic_module( + "sky130_fd_sc_ms__o41a_2", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41a_4 = logic_module( + "sky130_fd_sc_ms__o41a_4", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o41ai_1 = logic_module( + "sky130_fd_sc_ms__o41ai_1", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_2 = logic_module( + "sky130_fd_sc_ms__o41ai_2", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o41ai_4 = logic_module( + "sky130_fd_sc_ms__o41ai_4", + "Medium Speed", + ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211a_1 = logic_module( + "sky130_fd_sc_ms__o211a_1", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_2 = logic_module( + "sky130_fd_sc_ms__o211a_2", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211a_4 = logic_module( + "sky130_fd_sc_ms__o211a_4", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o211ai_1 = logic_module( + "sky130_fd_sc_ms__o211ai_1", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_2 = logic_module( + "sky130_fd_sc_ms__o211ai_2", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o211ai_4 = logic_module( + "sky130_fd_sc_ms__o211ai_4", + "Medium Speed", + ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221a_1 = logic_module( + "sky130_fd_sc_ms__o221a_1", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_2 = logic_module( + "sky130_fd_sc_ms__o221a_2", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221a_4 = logic_module( + "sky130_fd_sc_ms__o221a_4", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o221ai_1 = logic_module( + "sky130_fd_sc_ms__o221ai_1", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_2 = logic_module( + "sky130_fd_sc_ms__o221ai_2", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o221ai_4 = logic_module( + "sky130_fd_sc_ms__o221ai_4", + "Medium Speed", + ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311a_1 = logic_module( + "sky130_fd_sc_ms__o311a_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_2 = logic_module( + "sky130_fd_sc_ms__o311a_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311a_4 = logic_module( + "sky130_fd_sc_ms__o311a_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o311ai_1 = logic_module( + "sky130_fd_sc_ms__o311ai_1", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_2 = logic_module( + "sky130_fd_sc_ms__o311ai_2", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o311ai_4 = logic_module( + "sky130_fd_sc_ms__o311ai_4", + "Medium Speed", + ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111a_1 = logic_module( + "sky130_fd_sc_ms__o2111a_1", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_2 = logic_module( + "sky130_fd_sc_ms__o2111a_2", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111a_4 = logic_module( + "sky130_fd_sc_ms__o2111a_4", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], +) +o2111ai_1 = logic_module( + "sky130_fd_sc_ms__o2111ai_1", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_2 = logic_module( + "sky130_fd_sc_ms__o2111ai_2", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +o2111ai_4 = logic_module( + "sky130_fd_sc_ms__o2111ai_4", + "Medium Speed", + ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +or2_1 = logic_module( + "sky130_fd_sc_ms__or2_1", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_2 = logic_module( + "sky130_fd_sc_ms__or2_2", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2_4 = logic_module( + "sky130_fd_sc_ms__or2_4", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_1 = logic_module( + "sky130_fd_sc_ms__or2b_1", + "Medium Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_2 = logic_module( + "sky130_fd_sc_ms__or2b_2", + "Medium Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or2b_4 = logic_module( + "sky130_fd_sc_ms__or2b_4", + "Medium Speed", + ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_1 = logic_module( + "sky130_fd_sc_ms__or3_1", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_2 = logic_module( + "sky130_fd_sc_ms__or3_2", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3_4 = logic_module( + "sky130_fd_sc_ms__or3_4", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_1 = logic_module( + "sky130_fd_sc_ms__or3b_1", + "Medium Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_2 = logic_module( + "sky130_fd_sc_ms__or3b_2", + "Medium Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or3b_4 = logic_module( + "sky130_fd_sc_ms__or3b_4", + "Medium Speed", + ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_1 = logic_module( + "sky130_fd_sc_ms__or4_1", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_2 = logic_module( + "sky130_fd_sc_ms__or4_2", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4_4 = logic_module( + "sky130_fd_sc_ms__or4_4", + "Medium Speed", + ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_1 = logic_module( + "sky130_fd_sc_ms__or4b_1", + "Medium Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_2 = logic_module( + "sky130_fd_sc_ms__or4b_2", + "Medium Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4b_4 = logic_module( + "sky130_fd_sc_ms__or4b_4", + "Medium Speed", + ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_1 = logic_module( + "sky130_fd_sc_ms__or4bb_1", + "Medium Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_2 = logic_module( + "sky130_fd_sc_ms__or4bb_2", + "Medium Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +or4bb_4 = logic_module( + "sky130_fd_sc_ms__or4bb_4", + "Medium Speed", + ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], +) +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"], +) +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"], +) +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", + ], +) +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"], +) +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"], +) +sdfrtn_1 = logic_module( + "sky130_fd_sc_ms__sdfrtn_1", + "Medium Speed", + ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_1 = logic_module( + "sky130_fd_sc_ms__sdfrtp_1", + "Medium Speed", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_2 = logic_module( + "sky130_fd_sc_ms__sdfrtp_2", + "Medium Speed", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfrtp_4 = logic_module( + "sky130_fd_sc_ms__sdfrtp_4", + "Medium Speed", + ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +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"], +) +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"], +) +sdfstp_1 = logic_module( + "sky130_fd_sc_ms__sdfstp_1", + "Medium Speed", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_2 = logic_module( + "sky130_fd_sc_ms__sdfstp_2", + "Medium Speed", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfstp_4 = logic_module( + "sky130_fd_sc_ms__sdfstp_4", + "Medium Speed", + ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxbp_1 = logic_module( + "sky130_fd_sc_ms__sdfxbp_1", + "Medium Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxbp_2 = logic_module( + "sky130_fd_sc_ms__sdfxbp_2", + "Medium Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sdfxtp_1 = logic_module( + "sky130_fd_sc_ms__sdfxtp_1", + "Medium Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_2 = logic_module( + "sky130_fd_sc_ms__sdfxtp_2", + "Medium Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdfxtp_4 = logic_module( + "sky130_fd_sc_ms__sdfxtp_4", + "Medium Speed", + ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sdlclkp_1 = logic_module( + "sky130_fd_sc_ms__sdlclkp_1", + "Medium Speed", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_2 = logic_module( + "sky130_fd_sc_ms__sdlclkp_2", + "Medium Speed", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sdlclkp_4 = logic_module( + "sky130_fd_sc_ms__sdlclkp_4", + "Medium Speed", + ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], +) +sedfxbp_1 = logic_module( + "sky130_fd_sc_ms__sedfxbp_1", + "Medium Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sedfxbp_2 = logic_module( + "sky130_fd_sc_ms__sedfxbp_2", + "Medium Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], +) +sedfxtp_1 = logic_module( + "sky130_fd_sc_ms__sedfxtp_1", + "Medium Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sedfxtp_2 = logic_module( + "sky130_fd_sc_ms__sedfxtp_2", + "Medium Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +sedfxtp_4 = logic_module( + "sky130_fd_sc_ms__sedfxtp_4", + "Medium Speed", + ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], +) +tap_1 = logic_module( + "sky130_fd_sc_ms__tap_1", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +tap_2 = logic_module( + "sky130_fd_sc_ms__tap_2", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] +) +tapmet1_2 = logic_module( + "sky130_fd_sc_ms__tapmet1_2", "Medium Speed", ["VGND", "VPB", "VPWR"] +) +tapvgnd2_1 = logic_module( + "sky130_fd_sc_ms__tapvgnd2_1", "Medium Speed", ["VGND", "VPB", "VPWR"] +) +tapvgnd_1 = logic_module( + "sky130_fd_sc_ms__tapvgnd_1", "Medium Speed", ["VGND", "VPB", "VPWR"] +) +tapvpwrvgnd_1 = logic_module( + "sky130_fd_sc_ms__tapvpwrvgnd_1", "Medium Speed", ["VGND", "VPWR"] +) +xnor2_1 = logic_module( + "sky130_fd_sc_ms__xnor2_1", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_2 = logic_module( + "sky130_fd_sc_ms__xnor2_2", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor2_4 = logic_module( + "sky130_fd_sc_ms__xnor2_4", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], +) +xnor3_1 = logic_module( + "sky130_fd_sc_ms__xnor3_1", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_2 = logic_module( + "sky130_fd_sc_ms__xnor3_2", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xnor3_4 = logic_module( + "sky130_fd_sc_ms__xnor3_4", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_1 = logic_module( + "sky130_fd_sc_ms__xor2_1", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_2 = logic_module( + "sky130_fd_sc_ms__xor2_2", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor2_4 = logic_module( + "sky130_fd_sc_ms__xor2_4", + "Medium Speed", + ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_1 = logic_module( + "sky130_fd_sc_ms__xor3_1", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_2 = logic_module( + "sky130_fd_sc_ms__xor3_2", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) +xor3_4 = logic_module( + "sky130_fd_sc_ms__xor3_4", + "Medium Speed", + ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], +) diff --git a/sky130/hdl21/sky130_gf/pdk_data.py b/sky130/hdl21/sky130_gf/pdk_data.py new file mode 100644 index 000000000..9c00e3dcd --- /dev/null +++ b/sky130/hdl21/sky130_gf/pdk_data.py @@ -0,0 +1,464 @@ +# Std-Lib Imports +from copy import deepcopy + +# Hdl21 Imports +import hdl21 as h +from hdl21.prefix import ( + MEGA, + MILLI, + TERA, +) +from hdl21.primitives import ( + Bipolar, + Diode, + MosParams, + PhysicalCapacitor, + PhysicalResistor, + ThreeTerminalCapacitor, + ThreeTerminalResistor, +) + +# Vlsirtool Types to ease downstream parsing +from vlsirtools import SpiceType + +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 - parameters 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 +- Sky130LogicParams - parameters for logic 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 '2*int((nf+1)/2) * (w/nf + 0.29)'. + ps (h.Literal): Source perimeter of the MOSFET. Default is '2*int((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. + """ + + # Pdk units are in µm, throughout + 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.Scalar, + desc="Drain Area", + # `0.29` is diffusion length in µm + # As `nf` increments, drain region quantity is alternatively -1 or == source region quantity + 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.Scalar, + desc="Source Area", + # See above, and note expression `int((nf+2)/2)` is different + default=h.Literal("int((nf+2)/2) * w/nf * 0.29"), + ) + + pd = h.Param( + dtype=h.Scalar, + desc="Drain Perimeter", + # Perimeter of a single diffusion region is 2 * (TotalWidth / Fingers + DiffusionLength) + # Then multiply by total number of diffusion regions that make up drain + default=h.Literal("2*int((nf+1)/2) * (w/nf + 0.29)"), + ) + ps = h.Param( + dtype=h.Scalar, + desc="Source Perimeter", + # Ditto to above, but with respect to source + default=h.Literal("2*int((nf+2)/2) * (w/nf + 0.29)"), + ) + nrd = h.Param( + # Equivalent number of resistive 'squares' of the drain diffusion + # Will be multiplied with sheet resistance to model series resistance of drain + dtype=h.Scalar, + desc="Drain Resistive Value", + default=h.Literal("0.29 / w"), + ) + nrs = h.Param( + # Same idea as above, but with respect to source + dtype=h.Scalar, + desc="Source Resistive Value", + default=h.Literal("0.29 / w"), + ) + sa = h.Param( + dtype=h.Scalar, + desc="Spacing between Adjacent Gate to Drain", + default=0, + ) + sb = h.Param( + dtype=h.Scalar, + desc="Spacing between Adjacent Gate to Source", + default=0, + ) + sd = h.Param( + dtype=h.Scalar, + desc="Spacing between Adjacent Drain to Source", + default=0, + ) + mult = h.Param(dtype=h.Scalar, desc="Multiplier", default=1) + m = h.Param(dtype=h.Scalar, desc="Multiplier", default=1) + + +# NOTE: probably add a deprecation note for this alias; 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 diff --git a/sky130/hdl21/sky130_gf/pdk_logic.py b/sky130/hdl21/sky130_gf/pdk_logic.py new file mode 100644 index 000000000..7aef058fa --- /dev/null +++ b/sky130/hdl21/sky130_gf/pdk_logic.py @@ -0,0 +1,401 @@ +""" + +# 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 Any, Optional + +# Hdl21 Imports +import hdl21 as h +from hdl21.pdk import PdkInstallation +from hdl21.prefix import MEGA, MILLI, TERA +from hdl21.primitives import ( + Bipolar, + BipolarParams, + Diode, + DiodeParams, + Mos, + MosParams, + PhysicalCapacitor, + PhysicalCapacitorParams, + PhysicalResistor, + PhysicalResistorParams, + ThreeTerminalCapacitor, + ThreeTerminalResistor, +) + +# PyPi Imports +from pydantic.dataclasses import dataclass + +# Import relevant data from the PDK's data module +from .primitives.prim_dicts 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 ngpspice 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: + # 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 whittle 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 - Determines 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: + defaults = Sky130Mos20VParams.default_instance() + modparams = Sky130Mos20VParams(w=w, l=l, m=params.mult or defaults.m) + + else: + defaults = Sky130MosParams.default_instance() + modparams = Sky130MosParams( + w=w, + l=l, + nf=params.nf or defaults.nf, + mult=params.mult or defaults.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: h.Scalar | None, 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 isinstance(orig, h.Prefixed): + return orig # FIXME: where's the scaling? + if isinstance(orig, h.Literal): + return h.Literal(f"({orig.text} * 1e6)") + raise TypeError(f"Param Value {orig}") + + 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/sky130/hdl21/sky130_gf/primitives/__init__.py b/sky130/hdl21/sky130_gf/primitives/__init__.py new file mode 100644 index 000000000..bbc20dbab --- /dev/null +++ b/sky130/hdl21/sky130_gf/primitives/__init__.py @@ -0,0 +1 @@ +from .primitives import * diff --git a/sky130/hdl21/sky130_gf/primitives/prim_dicts.py b/sky130/hdl21/sky130_gf/primitives/prim_dicts.py new file mode 100644 index 000000000..ebc576f52 --- /dev/null +++ b/sky130/hdl21/sky130_gf/primitives/prim_dicts.py @@ -0,0 +1,443 @@ +""" +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. +""" + +# Std-Lib Imports +from dataclasses import dataclass, field + +# Local Imports +from hdl21.prefix import µ + +from ..pdk_data import * + +# Individuate component types +MosKey = tuple[str, MosType, MosVth, MosFamily] + + +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 + ), +} + + +@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": (0.420 * µ, 0.150 * µ), + "sky130_fd_pr__nfet_01v8_lvt": ( + 0.420 * µ, + 0.150 * µ, + ), + "sky130_fd_pr__pfet_01v8": (0.550 * µ, 0.150 * µ), + "sky130_fd_pr__pfet_01v8_hvt": ( + 0.550 * µ, + 0.150 * µ, + ), + "sky130_fd_pr__pfet_01v8_lvt": ( + 0.550 * µ, + 0.350 * µ, + ), + "sky130_fd_pr__pfet_g5v0d10v5": ( + 0.420 * µ, + 0.500 * µ, + ), + "sky130_fd_pr__nfet_g5v0d10v5": ( + 0.420 * µ, + 0.500 * µ, + ), + "sky130_fd_pr__pfet_g5v0d16v0": ( + 5.000 * µ, + 0.660 * µ, + ), + "sky130_fd_pr__nfet_20v0": (29.410 * µ, 2.950 * µ), + "sky130_fd_pr__nfet_20v0_zvt": ( + 30.000 * µ, + 1.500 * µ, + ), + "sky130_fd_pr__nfet_20v0_iso": ( + 30.000 * µ, + 1.500 * µ, + ), + "sky130_fd_pr__pfet_20v0": (30.000 * µ, 1.000 * µ), + "sky130_fd_pr__nfet_03v3_nvt": ( + 0.700 * µ, + 0.500 * µ, + ), + "sky130_fd_pr__nfet_05v0_nvt": ( + 0.700 * µ, + 0.900 * µ, + ), + "sky130_fd_pr__nfet_20v0_nvt": ( + 30.000 * µ, + 1.000 * µ, + ), + "sky130_fd_pr__esd_nfet_01v8": ( + 20.350 * µ, + 0.165 * µ, + ), + "sky130_fd_pr__esd_nfet_g5v0d10v5": ( + 14.500 * µ, + 0.550 * µ, + ), + "sky130_fd_pr__esd_nfet_g5v0d10v5_nvt": ( + 10.000 * µ, + 0.900 * µ, + ), + "sky130_fd_pr__esd_pfet_g5v0d10v5": ( + 14.500 * µ, + 0.550 * µ, + ), +} + +default_gen_res_size = { + "sky130_fd_pr__res_generic_po": ( + 0.720 * µ, + 0.290 * µ, + ), + "sky130_fd_pr__res_generic_l1": ( + 0.720 * µ, + 0.290 * µ, + ), + "sky130_fd_pr__res_generic_m1": ( + 0.720 * µ, + 0.290 * µ, + ), + "sky130_fd_pr__res_generic_m2": ( + 0.720 * µ, + 0.290 * µ, + ), + "sky130_fd_pr__res_generic_m3": ( + 0.720 * µ, + 0.290 * µ, + ), + "sky130_fd_pr__res_generic_m4": ( + 0.720 * µ, + 0.290 * µ, + ), + "sky130_fd_pr__res_generic_m5": ( + 0.720 * µ, + 0.290 * µ, + ), + "sky130_fd_pr__res_generic_nd": ( + 0.150 * µ, + 0.270 * µ, + ), + "sky130_fd_pr__res_generic_pd": ( + 0.150 * µ, + 0.270 * µ, + ), + # FIXME: This value is lifted from xschem but can't be found in documentation + "sky130_fd_pr__res_iso_pw": (2.650 * µ, 2.650 * µ), +} + +# These have to be left in microns for parsing reasons +default_prec_res_L = { + "sky130_fd_pr__res_high_po_0p35": 0.350, + "sky130_fd_pr__res_high_po_0p69": 0.690, + "sky130_fd_pr__res_high_po_1p41": 1.410, + "sky130_fd_pr__res_high_po_2p85": 2.850, + "sky130_fd_pr__res_high_po_5p73": 5.300, + "sky130_fd_pr__res_xhigh_po_0p35": 0.350, + "sky130_fd_pr__res_xhigh_po_0p69": 0.690, + "sky130_fd_pr__res_xhigh_po_1p41": 1.410, + "sky130_fd_pr__res_xhigh_po_2p85": 2.850, + "sky130_fd_pr__res_xhigh_po_5p73": 5.300, +} + +default_cap_sizes = { + # FIXME: Using documentation minimum sizing not sure of correct answer + "sky130_fd_pr__cap_mim_m3_1": ( + 2.000 * µ, + 2.000 * µ, + ), + "sky130_fd_pr__cap_mim_m3_2": ( + 2.000 * µ, + 2.000 * µ, + ), + "sky130_fd_pr__cap_var_lvt": (0.180 * µ, 0.180 * µ), + "sky130_fd_pr__cap_var_hvt": (0.180 * µ, 0.180 * µ), +} diff --git a/sky130/hdl21/sky130_gf/primitives/primitives.py b/sky130/hdl21/sky130_gf/primitives/primitives.py new file mode 100644 index 000000000..bcfb4b90f --- /dev/null +++ b/sky130/hdl21/sky130_gf/primitives/primitives.py @@ -0,0 +1,187 @@ +""" +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. +""" + +from ..pdk_data import * + +NMOS_1p8V_STD = xtor_module("sky130_fd_pr__nfet_01v8") +NMOS_1p8V_LOW = xtor_module("sky130_fd_pr__nfet_01v8_lvt") +PMOS_1p8V_STD = xtor_module("sky130_fd_pr__pfet_01v8") +PMOS_1p8V_HIGH = xtor_module("sky130_fd_pr__pfet_01v8_hvt") +PMOS_1p8V_LOW = xtor_module("sky130_fd_pr__pfet_01v8_lvt") +PMOS_5p5V_D10_STD = xtor_module("sky130_fd_pr__pfet_g5v0d10v5") +NMOS_5p5V_D10_STD = xtor_module("sky130_fd_pr__nfet_g5v0d10v5") +PMOS_5p5V_D16_STD = xtor_module("sky130_fd_pr__pfet_g5v0d16v0") +NMOS_20p0V_STD = xtor_module("sky130_fd_pr__nfet_20v0", params=Sky130Mos20VParams) +NMOS_20p0V_LOW = xtor_module("sky130_fd_pr__nfet_20v0_zvt", params=Sky130Mos20VParams) +NMOS_ISO_20p0V = xtor_module( + "sky130_fd_pr__nfet_20v0_iso", params=Sky130Mos20VParams, num_terminals=5 +) +PMOS_20p0V = xtor_module("sky130_fd_pr__pfet_20v0", params=Sky130Mos20VParams) +# Note there are no NMOS HVT! +# Add Native FET entries +NMOS_3p3V_NAT = xtor_module("sky130_fd_pr__nfet_03v3_nvt") +NMOS_5p0V_NAT = xtor_module("sky130_fd_pr__nfet_05v0_nvt") +NMOS_20p0V_NAT = xtor_module("sky130_fd_pr__nfet_20v0_nvt", params=Sky130Mos20VParams) +# Add ESD FET entries +ESD_NMOS_1p8V = xtor_module("sky130_fd_pr__esd_nfet_01v8") +ESD_NMOS_5p5V_D10 = xtor_module("sky130_fd_pr__esd_nfet_g5v0d10v5") +ESD_NMOS_5p5V_NAT = xtor_module("sky130_fd_pr__esd_nfet_g5v0d10v5_nvt") +ESD_PMOS_5p5V = xtor_module("sky130_fd_pr__esd_pfet_g5v0d10v5") + +# 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) + +# 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 +""" +# 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") + +# 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, +) + +# 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 +) diff --git a/sky130/hdl21/sky130_gf/test_netlists.py b/sky130/hdl21/sky130_gf/test_netlists.py new file mode 100644 index 000000000..2567d67f0 --- /dev/null +++ b/sky130/hdl21/sky130_gf/test_netlists.py @@ -0,0 +1,259 @@ +""" +This series of tests is made by painstakingly 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 +import sky130_hdl21 +from hdl21.prefix import µ + +from . import pdk_logic as 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_hdl21.Sky130BipolarParams() + + @h.module + class Bipolar1: + w, x, y, z = 4 * h.Signal() + genBipolar = sky130_hdl21.primitives.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_hdl21.primitives.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/sky130/hdl21/sky130_gf/test_pdk.py b/sky130/hdl21/sky130_gf/test_pdk.py new file mode 100644 index 000000000..21e339747 --- /dev/null +++ b/sky130/hdl21/sky130_gf/test_pdk.py @@ -0,0 +1,393 @@ +""" +# SkyWater 130nm OSS PDK Plug-In + +Unit Tests +""" + +from io import StringIO + +import hdl21 as h +import sky130_hdl21.primitives as s +from hdl21.primitives import * + +from . import pdk_logic as sky130 + + +def test_default(): + h.pdk.set_default(sky130) + assert h.pdk.default() is sky130 + + +def mos_primitives_module(): + sky130.Sky130MosParams() + + @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 != "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(): + _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): + # 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(): + _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_mos_module(): + p = sky130.Sky130MosParams() + q = sky130.Sky130Mos20VParams() + + @h.module + class HasXtors: + 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(): + from hdl21.tests.content import walker_test_content + + content = walker_test_content() + sky130.compile(content) diff --git a/sky130/hdl21/sky130_gf/test_site_sims.py b/sky130/hdl21/sky130_gf/test_site_sims.py new file mode 100644 index 000000000..08f0dbc39 --- /dev/null +++ b/sky130/hdl21/sky130_gf/test_site_sims.py @@ -0,0 +1,657 @@ +""" +# 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 hdl21 as h +import sky130_hdl21 as sky130 +import sky130_hdl21.primitives as s +import vlsirtools.spice as vsp + + +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.primitives.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.primitives.NMOS_1p8V_STD()(d=o, g=i, s=VSS, b=VSS) + p = sky130.primitives.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) From 4ace8134bb6e2b21f9feeaf6963e1e50e8207d73 Mon Sep 17 00:00:00 2001 From: daquintero Date: Thu, 23 May 2024 17:11:55 +0200 Subject: [PATCH 2/3] i think they're linked --- docs/notebooks/simulation_basics.ipynb | 60 + pyproject.toml | 5 +- sky130/hdl21.py | 15 + sky130/hdl21/readme.md | 295 -- sky130/hdl21/scripts/export.py | 106 - sky130/hdl21/scripts/parse_digital_cells.py | 37 - sky130/hdl21/sky130_gf/__init__.py | 13 - .../hdl21/sky130_gf/digital_cells/__init__.py | 0 .../sky130_gf/digital_cells/high_density.py | 2171 ---------- .../sky130_gf/digital_cells/high_speed.py | 1918 --------- .../sky130_gf/digital_cells/low_leakage.py | 1661 -------- .../sky130_gf/digital_cells/low_power.py | 3636 ----------------- .../sky130_gf/digital_cells/low_speed.py | 1939 --------- .../sky130_gf/digital_cells/medium_speed.py | 1937 --------- sky130/hdl21/sky130_gf/pdk_data.py | 464 --- sky130/hdl21/sky130_gf/pdk_logic.py | 401 -- sky130/hdl21/sky130_gf/primitives/__init__.py | 1 - .../hdl21/sky130_gf/primitives/prim_dicts.py | 443 -- .../hdl21/sky130_gf/primitives/primitives.py | 187 - sky130/hdl21/sky130_gf/test_netlists.py | 259 -- sky130/hdl21/sky130_gf/test_pdk.py | 393 -- sky130/hdl21/sky130_gf/test_site_sims.py | 657 --- sky130/spice_models.py | 1083 ----- 23 files changed, 78 insertions(+), 17603 deletions(-) create mode 100644 docs/notebooks/simulation_basics.ipynb create mode 100644 sky130/hdl21.py delete mode 100644 sky130/hdl21/readme.md delete mode 100755 sky130/hdl21/scripts/export.py delete mode 100644 sky130/hdl21/scripts/parse_digital_cells.py delete mode 100644 sky130/hdl21/sky130_gf/__init__.py delete mode 100644 sky130/hdl21/sky130_gf/digital_cells/__init__.py delete mode 100644 sky130/hdl21/sky130_gf/digital_cells/high_density.py delete mode 100644 sky130/hdl21/sky130_gf/digital_cells/high_speed.py delete mode 100644 sky130/hdl21/sky130_gf/digital_cells/low_leakage.py delete mode 100644 sky130/hdl21/sky130_gf/digital_cells/low_power.py delete mode 100644 sky130/hdl21/sky130_gf/digital_cells/low_speed.py delete mode 100644 sky130/hdl21/sky130_gf/digital_cells/medium_speed.py delete mode 100644 sky130/hdl21/sky130_gf/pdk_data.py delete mode 100644 sky130/hdl21/sky130_gf/pdk_logic.py delete mode 100644 sky130/hdl21/sky130_gf/primitives/__init__.py delete mode 100644 sky130/hdl21/sky130_gf/primitives/prim_dicts.py delete mode 100644 sky130/hdl21/sky130_gf/primitives/primitives.py delete mode 100644 sky130/hdl21/sky130_gf/test_netlists.py delete mode 100644 sky130/hdl21/sky130_gf/test_pdk.py delete mode 100644 sky130/hdl21/sky130_gf/test_site_sims.py delete mode 100644 sky130/spice_models.py diff --git a/docs/notebooks/simulation_basics.ipynb b/docs/notebooks/simulation_basics.ipynb new file mode 100644 index 000000000..c3073de83 --- /dev/null +++ b/docs/notebooks/simulation_basics.ipynb @@ -0,0 +1,60 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "8163b0cd-276a-4530-99dd-97bc20906b78", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\u001b[32m2024-05-23 17:10:58.325\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.pdk\u001b[0m:\u001b[36mregister_cells_yaml\u001b[0m:\u001b[36m376\u001b[0m - \u001b[1mRegistered cell 'sample'\u001b[0m\n" + ] + } + ], + "source": [ + "import sky130\n", + "import sky130_hdl21" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c3e4d92b-c3d3-4677-8416-9c23de62b6c9", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "978298fe-2c3e-492a-b037-28a7ffcbe337", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyproject.toml b/pyproject.toml index fc5090d2a..61285c2ef 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -16,9 +16,10 @@ classifiers = [ ] dependencies = [ "gdsfactory~=7.26.1", - "PySpice" + "hdl21 @ git+https://github.com/cascode-labs/Hdl21.git@main", + "sky130-hdl21 @ git+https://github.com/cascode-labs/Hdl21.git@main#subdirectory=pdks/Sky130" ] -description = "skywater130 pdk" +description = "Skywater130 PDK compatible with gdsfactory and related." keywords = ["python"] license = {file = "LICENSE"} name = "sky130" diff --git a/sky130/hdl21.py b/sky130/hdl21.py new file mode 100644 index 000000000..fa6a0f4da --- /dev/null +++ b/sky130/hdl21.py @@ -0,0 +1,15 @@ +""" +Configuration for the hdl21 PDK linking with our source files. +""" +import pathlib + +import sky130_hdl21 + +pdk_path = pathlib.Path(__file__).parent / "src" / "sky130_fd_pr" +model_ref = pdk_path / "models" / "sky130.lib.spice" + +sky130_hdl21.install = sky130_hdl21.Install( + pdk_path=pdk_path, + lib_path=model_ref, + model_ref=model_ref, +) diff --git a/sky130/hdl21/readme.md b/sky130/hdl21/readme.md deleted file mode 100644 index 24ebca88a..000000000 --- a/sky130/hdl21/readme.md +++ /dev/null @@ -1,295 +0,0 @@ - -## About this PDK Package - -`sky130_hdl21` 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. - - -## Installation - -Install from PyPi via: - -``` -pip install sky130-hdl21 -``` - -And then import the package as `sky130_hdl21`: - -```python -import sky130_hdl21 -assert sky130_hdl21.primitives 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. - -A helpful resource for installing the non-Python portions of the 130nm PDK: -https://anaconda.org/litex-hub/open_pdks.sky130a - -Installable with `conda` via: - -``` -conda install -y -c litex-hub open_pdks.sky130a -``` - -Using the conda-based installation, a typical [sitepdks](https://github.com/dan-fritchman/Hdl21#pdk-installations-and-sites) module might look like: - -```python -CONDA_PREFIX = os.environ.get("CONDA_PREFIX") -model_lib = Path(CONDA_PREFIX) / "share/pdk/sky130A/libs.tech/ngspice/sky130.lib.spice" - -import sky130_hdl21 -sky130_hdl21.install = sky130_hdl21.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. - -1. [MOSFETs](#mosfets) -2. [Generic Resistors](#generic-resistors) -3. [Precision Resistors](#precision-resistors) -4. [Diodes](#diodes) -5. [Bipolar Junction Transistors](#bipolar-junction-transistors) -6. [Capacitors](#capacitors) -7. [Digital Cells](#digital-cells) - -### 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 - -MOSFETs in Hdl21 are designed to be PDK-agnostic, making it possible select the desired MOS using either model compilation: -```python -import sky130_hdl21 -from hdl21.primitives import Mos, MosType, MosFamily, MosVth - -a = Mos(vth=MosVth.STD,tp=MosType.NMOS,family=MosFamily.CORE) -sky130_hdl21.compile(a) # a is now an instance of sky130.primitives.NMOS_1p8V_STD -``` -Or can be referenced directly using the component name listed below from the `primitives` submodule. - -NOTE: If any dimensions are not supplied to the params object, the PDK module will assume the minimal viable dimension of the component that you choose. -```python -from hdl21.prefix import µ -from sky130_hdl21_hdl21 import sky130MosParams as p -import sky130_hdl21.primitives as s - -a = s.NMOS_1p8V_STD(p(w=0.2*µ,nf=1)) -``` - -| 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 are resistors composed of materials used in the Sky130 process and can be defined using either width (W), length (L), 3-terminal resistors are formed of substrates and have an additional substrate terminal. - -Generic resistors are not offered with PDK-agnostic compilation and so must be referred to directly with the correct paramtype: -```python -from hdl21.prefix import µ -from sky130_hdl21_hdl21 import Sky130GenResParams as p -from sky130_hdl21_hdl21.primitives import GEN_PO - -a = GEN_PO(p(l=0.3 * µ, w=0.18 * µ)) -``` - -| 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 are made of polysilicon and 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). - -**NOTE: UNITS ARE ASSUMED TO BE IN MICRONS FOR PRECISION RESISTORS** - -```python -from hdl21.prefix import µ -from sky130_hdl21 import Sky130PrecResParams as p -from sky130_hdl21.primitives import GEN_PO - -# NOTE: We assume the units are in microns here -a = GEN_PO(p(L=0.3)) -``` - -| 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). - -**NOTE: DUE TO ANOTHER INTERESTING SCALING QUIRK, MEASUREMENTS FOR DIODES ARE MULTIPLIED BY 1e12 IN SKY130** - -```python -from hdl21.prefix import MEGA, TERA -from sky130_hdl21 import Sky130DiodeParams as par -from sky130_hdl21.primitives import PWND_5p5V - -a = PWND_5p5V(par(area=0.3 * TERA, pj=1.2 * MEGA)) -``` - -| 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: - -```python -from sky130_hdl21 import Sky130BipolarParams as par -from sky130_hdl21.primitives import NPN_5p0V_1x2 - -a = NPN_5p0V_1x2(par(m=2)) -``` - -| 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: - -MiM caps: -```python -from hdl21.prefix import µ -from sky130_hdl21 import Sky130MimCapParams as par -from sky130_hdl21.primitives import MIM_M3 - -a = MIM_M3(w=2 * µ, l=2 * µ) -``` - -Varicaps: -```python -from hdl21.prefix import µ -from sky130_hdl21 import Sky130VarCapParams as par -from sky130_hdl21.primitives import VAR_LVT - -a = VAR_LVT(w=2 * µ, l=2 * µ) -``` - -Vertical-Perpendicular/Parallel Plates: -```python -from sky130_hdl21 import Sky130VPPParams as par -from sky130_hdl21.primitives import VPP_PARA_5 - -a = VPP_PARA_5(m=1) -``` - -| 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 | - -### Digital Cells - -The full range of SKY130's Standard Cell Libraries also work with the Sky130 PDK, they are far too numerous to name here but excellent documentation is available at: https://diychip.org/sky130/ . We allow users to select from each of the libraries using the following import statements: - -| Library Name | Import Statement | -|--------------|------------------| -| sky130_fd_sc_hd | `import sky130.digital_cells.high_density as hd` | -| sky130_fd_sc_hdll | `import sky130.digital_cells.low_leakage as hdll` | -| sky130_fd_sc_hs | `import sky130.digital_cells.high_speed as hs` | -| sky130_fd_sc_hvl | `import sky130.digital_cells.high_voltage as hvl` | -| sky130_fd_sc_lp | `import sky130.digital_cells.low_power as lp` | -| sky130_fd_sc_ls | `import sky130.digital_cells.low_speed as ls` | -| sky130_fd_sc_ms | `import sky130.digital_cells.medium_speed as ms` | - -If you like to load all the digital simultaneously, you can also import the entire digital library by calling `from sky130_hdl21.digital_cells import *`, although - this can take a while. - -Each component is reflects the naming in DIYChip's documentation as well as their ports, for example: - -```python -import sky130_hdl21.digital_cells.high_density as hd -from sky130_hdl21 import Sky130LogicParams as param -p = param() -simple_or = hd.or2_0(p) -``` - -## Development - -``` -pip install -e ".[dev]" -``` diff --git a/sky130/hdl21/scripts/export.py b/sky130/hdl21/scripts/export.py deleted file mode 100755 index ca81009b4..000000000 --- a/sky130/hdl21/scripts/export.py +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env python3 -# -# Exports PDK data in Vlsir schema format (protobufs). - -# To run this without installation (maybe during development), you need to -# specify paths to VlsirTools, the Vlsir proto bindings, Hdl21 and the Sky130 -# PDK package (this one): -# PYTHONPATH=/path/Hdl21/pdks/Sky130:/path/Hdl21:/path/Vlsir/VlsirTools/:/path/Vlsir/bindings/python/ \ -# ./export.py --text_format - - -import optparse - -import google.protobuf.text_format as text_format -import hdl21 as h -import vlsir.circuit_pb2 as vlsir_circuit -from sky130_hdl21 import pdk_data -from sky130_hdl21.primitives import prim_dicts -from tabulate import tabulate - - -def define_options(optparser: optparse.OptionParser): - optparser.add_option( - "-o", - "--output", - dest="output", - default="sky130.primitives.pb", - help="name of proto file to export to", - ) - optparser.add_option( - "-t", - "--text_format", - dest="text_format", - action="store_true", - default=False, - help="also export text format version of protobuf", - ) - - -def collect_other_primitives( - defs: dict[str, h.ExternalModule], modules: [h.ExternalModule] -): - table_rows = [] - for name, module in prim_dicts.ress.items(): - table_rows.append([name, module.name]) - modules.append(module) - print(tabulate(table_rows)) - - -def process(options: optparse.Values): - # The primitives are conveniently listed in sky130_hdl21.prim_dicts. You - # could also scrape sky130_hdl21.primitives.__dict__, but don't. - ext_modules: [h.ExternalModule] = [] - - print("Transistors:") - table_rows = [] - for mos_key, module in prim_dicts.xtors.items(): - name, mos_type, mos_vth, mos_family = mos_key - table_rows.append([name, module.name, mos_type, mos_vth, mos_family]) - ext_modules.append(module) - print(tabulate(table_rows)) - - others = { - "Resistors": prim_dicts.ress, - "Diodes": prim_dicts.diodes, - "BJTs": prim_dicts.bjts, - "VPPs": prim_dicts.vpps, - } - - for name, defs in others.items(): - print(f"{name}:") - collect_other_primitives(defs, ext_modules) - - package_pb = vlsir_circuit.Package() - package_pb.domain = pdk_data.PDK_NAME - - for module in ext_modules: - module_pb = h.proto.exporting.export_external_module(module) - for name, param in module.paramtype.__params__.items(): - param_pb = module_pb.parameters.add() - param_pb.name = name - param_pb.value.CopyFrom(h.proto.exporting.export_param_value(param.default)) - param_pb.desc = param.desc - - package_pb.ext_modules.append(module_pb) - - print(f"\nwriting {options.output}") - with open(f"{options.output}", "wb") as f: - f.write(package_pb.SerializeToString()) - - if options.text_format: - filename = f"{options.output}.txt" - print(f"writing {filename}") - with open(filename, "w") as f: - f.write(text_format.MessageToString(package_pb)) - - -def main(): - optparser = optparse.OptionParser() - define_options(optparser) - options, _ = optparser.parse_args() - process(options) - - -if __name__ == "__main__": - main() diff --git a/sky130/hdl21/scripts/parse_digital_cells.py b/sky130/hdl21/scripts/parse_digital_cells.py deleted file mode 100644 index faecaaacb..000000000 --- a/sky130/hdl21/scripts/parse_digital_cells.py +++ /dev/null @@ -1,37 +0,0 @@ -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) 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/sky130/hdl21/sky130_gf/__init__.py b/sky130/hdl21/sky130_gf/__init__.py deleted file mode 100644 index d1f768287..000000000 --- a/sky130/hdl21/sky130_gf/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ - -from hdl21.pdk import register - -# Grab our primary PDK-definition module -from . import pdk_logic -from .pdk_logic import * - -# The optional external-data installation. -# Set by an instantiator of `Install`, if available. -install: Install | None = None - -# And register as a PDK module -register(pdk_logic) diff --git a/sky130/hdl21/sky130_gf/digital_cells/__init__.py b/sky130/hdl21/sky130_gf/digital_cells/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/sky130/hdl21/sky130_gf/digital_cells/high_density.py b/sky130/hdl21/sky130_gf/digital_cells/high_density.py deleted file mode 100644 index 978954963..000000000 --- a/sky130/hdl21/sky130_gf/digital_cells/high_density.py +++ /dev/null @@ -1,2171 +0,0 @@ -from ..pdk_data import logic_module - -a2bb2o_1 = logic_module( - "sky130_fd_sc_hd__a2bb2o_1", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_2 = logic_module( - "sky130_fd_sc_hd__a2bb2o_2", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_4 = logic_module( - "sky130_fd_sc_hd__a2bb2o_4", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2oi_1 = logic_module( - "sky130_fd_sc_hd__a2bb2oi_1", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_2 = logic_module( - "sky130_fd_sc_hd__a2bb2oi_2", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_4 = logic_module( - "sky130_fd_sc_hd__a2bb2oi_4", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21bo_1 = logic_module( - "sky130_fd_sc_hd__a21bo_1", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_2 = logic_module( - "sky130_fd_sc_hd__a21bo_2", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_4 = logic_module( - "sky130_fd_sc_hd__a21bo_4", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21boi_0 = logic_module( - "sky130_fd_sc_hd__a21boi_0", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_1 = logic_module( - "sky130_fd_sc_hd__a21boi_1", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_2 = logic_module( - "sky130_fd_sc_hd__a21boi_2", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_4 = logic_module( - "sky130_fd_sc_hd__a21boi_4", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21o_1 = logic_module( - "sky130_fd_sc_hd__a21o_1", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_2 = logic_module( - "sky130_fd_sc_hd__a21o_2", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_4 = logic_module( - "sky130_fd_sc_hd__a21o_4", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21oi_1 = logic_module( - "sky130_fd_sc_hd__a21oi_1", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_2 = logic_module( - "sky130_fd_sc_hd__a21oi_2", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_4 = logic_module( - "sky130_fd_sc_hd__a21oi_4", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22o_1 = logic_module( - "sky130_fd_sc_hd__a22o_1", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_2 = logic_module( - "sky130_fd_sc_hd__a22o_2", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_4 = logic_module( - "sky130_fd_sc_hd__a22o_4", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22oi_1 = logic_module( - "sky130_fd_sc_hd__a22oi_1", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_2 = logic_module( - "sky130_fd_sc_hd__a22oi_2", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_4 = logic_module( - "sky130_fd_sc_hd__a22oi_4", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31o_1 = logic_module( - "sky130_fd_sc_hd__a31o_1", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_2 = logic_module( - "sky130_fd_sc_hd__a31o_2", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_4 = logic_module( - "sky130_fd_sc_hd__a31o_4", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31oi_1 = logic_module( - "sky130_fd_sc_hd__a31oi_1", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_2 = logic_module( - "sky130_fd_sc_hd__a31oi_2", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_4 = logic_module( - "sky130_fd_sc_hd__a31oi_4", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32o_1 = logic_module( - "sky130_fd_sc_hd__a32o_1", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_2 = logic_module( - "sky130_fd_sc_hd__a32o_2", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_4 = logic_module( - "sky130_fd_sc_hd__a32o_4", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32oi_1 = logic_module( - "sky130_fd_sc_hd__a32oi_1", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_2 = logic_module( - "sky130_fd_sc_hd__a32oi_2", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_4 = logic_module( - "sky130_fd_sc_hd__a32oi_4", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41o_1 = logic_module( - "sky130_fd_sc_hd__a41o_1", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_2 = logic_module( - "sky130_fd_sc_hd__a41o_2", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_4 = logic_module( - "sky130_fd_sc_hd__a41o_4", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41oi_1 = logic_module( - "sky130_fd_sc_hd__a41oi_1", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_2 = logic_module( - "sky130_fd_sc_hd__a41oi_2", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_4 = logic_module( - "sky130_fd_sc_hd__a41oi_4", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211o_1 = logic_module( - "sky130_fd_sc_hd__a211o_1", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_2 = logic_module( - "sky130_fd_sc_hd__a211o_2", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_4 = logic_module( - "sky130_fd_sc_hd__a211o_4", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211oi_1 = logic_module( - "sky130_fd_sc_hd__a211oi_1", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_2 = logic_module( - "sky130_fd_sc_hd__a211oi_2", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_4 = logic_module( - "sky130_fd_sc_hd__a211oi_4", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221o_1 = logic_module( - "sky130_fd_sc_hd__a221o_1", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_2 = logic_module( - "sky130_fd_sc_hd__a221o_2", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_4 = logic_module( - "sky130_fd_sc_hd__a221o_4", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221oi_1 = logic_module( - "sky130_fd_sc_hd__a221oi_1", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_2 = logic_module( - "sky130_fd_sc_hd__a221oi_2", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_4 = logic_module( - "sky130_fd_sc_hd__a221oi_4", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a222oi_1 = logic_module( - "sky130_fd_sc_hd__a222oi_1", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311o_1 = logic_module( - "sky130_fd_sc_hd__a311o_1", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_2 = logic_module( - "sky130_fd_sc_hd__a311o_2", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_4 = logic_module( - "sky130_fd_sc_hd__a311o_4", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311oi_1 = logic_module( - "sky130_fd_sc_hd__a311oi_1", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_2 = logic_module( - "sky130_fd_sc_hd__a311oi_2", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_4 = logic_module( - "sky130_fd_sc_hd__a311oi_4", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111o_1 = logic_module( - "sky130_fd_sc_hd__a2111o_1", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_2 = logic_module( - "sky130_fd_sc_hd__a2111o_2", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_4 = logic_module( - "sky130_fd_sc_hd__a2111o_4", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111oi_0 = logic_module( - "sky130_fd_sc_hd__a2111oi_0", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_1 = logic_module( - "sky130_fd_sc_hd__a2111oi_1", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_2 = logic_module( - "sky130_fd_sc_hd__a2111oi_2", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_4 = logic_module( - "sky130_fd_sc_hd__a2111oi_4", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -and2_0 = logic_module( - "sky130_fd_sc_hd__and2_0", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_1 = logic_module( - "sky130_fd_sc_hd__and2_1", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_2 = logic_module( - "sky130_fd_sc_hd__and2_2", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_4 = logic_module( - "sky130_fd_sc_hd__and2_4", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_1 = logic_module( - "sky130_fd_sc_hd__and2b_1", - "High Density", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_2 = logic_module( - "sky130_fd_sc_hd__and2b_2", - "High Density", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_4 = logic_module( - "sky130_fd_sc_hd__and2b_4", - "High Density", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_1 = logic_module( - "sky130_fd_sc_hd__and3_1", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_2 = logic_module( - "sky130_fd_sc_hd__and3_2", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_4 = logic_module( - "sky130_fd_sc_hd__and3_4", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_1 = logic_module( - "sky130_fd_sc_hd__and3b_1", - "High Density", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_2 = logic_module( - "sky130_fd_sc_hd__and3b_2", - "High Density", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_4 = logic_module( - "sky130_fd_sc_hd__and3b_4", - "High Density", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_1 = logic_module( - "sky130_fd_sc_hd__and4_1", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_2 = logic_module( - "sky130_fd_sc_hd__and4_2", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_4 = logic_module( - "sky130_fd_sc_hd__and4_4", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_1 = logic_module( - "sky130_fd_sc_hd__and4b_1", - "High Density", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_2 = logic_module( - "sky130_fd_sc_hd__and4b_2", - "High Density", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_4 = logic_module( - "sky130_fd_sc_hd__and4b_4", - "High Density", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_1 = logic_module( - "sky130_fd_sc_hd__and4bb_1", - "High Density", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_2 = logic_module( - "sky130_fd_sc_hd__and4bb_2", - "High Density", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_4 = logic_module( - "sky130_fd_sc_hd__and4bb_4", - "High Density", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_1 = logic_module( - "sky130_fd_sc_hd__buf_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_2 = logic_module( - "sky130_fd_sc_hd__buf_2", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_4 = logic_module( - "sky130_fd_sc_hd__buf_4", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_6 = logic_module( - "sky130_fd_sc_hd__buf_6", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_8 = logic_module( - "sky130_fd_sc_hd__buf_8", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_12 = logic_module( - "sky130_fd_sc_hd__buf_12", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_16 = logic_module( - "sky130_fd_sc_hd__buf_16", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufbuf_8 = logic_module( - "sky130_fd_sc_hd__bufbuf_8", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufbuf_16 = logic_module( - "sky130_fd_sc_hd__bufbuf_16", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufinv_8 = logic_module( - "sky130_fd_sc_hd__bufinv_8", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -bufinv_16 = logic_module( - "sky130_fd_sc_hd__bufinv_16", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkbuf_1 = logic_module( - "sky130_fd_sc_hd__clkbuf_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_2 = logic_module( - "sky130_fd_sc_hd__clkbuf_2", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_4 = logic_module( - "sky130_fd_sc_hd__clkbuf_4", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_8 = logic_module( - "sky130_fd_sc_hd__clkbuf_8", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_16 = logic_module( - "sky130_fd_sc_hd__clkbuf_16", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s15_1 = logic_module( - "sky130_fd_sc_hd__clkdlybuf4s15_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s15_2 = logic_module( - "sky130_fd_sc_hd__clkdlybuf4s15_2", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s18_1 = logic_module( - "sky130_fd_sc_hd__clkdlybuf4s18_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s18_2 = logic_module( - "sky130_fd_sc_hd__clkdlybuf4s18_2", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s25_1 = logic_module( - "sky130_fd_sc_hd__clkdlybuf4s25_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s25_2 = logic_module( - "sky130_fd_sc_hd__clkdlybuf4s25_2", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s50_1 = logic_module( - "sky130_fd_sc_hd__clkdlybuf4s50_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s50_2 = logic_module( - "sky130_fd_sc_hd__clkdlybuf4s50_2", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkinv_1 = logic_module( - "sky130_fd_sc_hd__clkinv_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_2 = logic_module( - "sky130_fd_sc_hd__clkinv_2", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_4 = logic_module( - "sky130_fd_sc_hd__clkinv_4", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_8 = logic_module( - "sky130_fd_sc_hd__clkinv_8", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_16 = logic_module( - "sky130_fd_sc_hd__clkinv_16", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinvlp_2 = logic_module( - "sky130_fd_sc_hd__clkinvlp_2", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinvlp_4 = logic_module( - "sky130_fd_sc_hd__clkinvlp_4", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -conb_1 = logic_module( - "sky130_fd_sc_hd__conb_1", - "High Density", - ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], -) -decap_3 = logic_module( - "sky130_fd_sc_hd__decap_3", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_4 = logic_module( - "sky130_fd_sc_hd__decap_4", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_6 = logic_module( - "sky130_fd_sc_hd__decap_6", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_8 = logic_module( - "sky130_fd_sc_hd__decap_8", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_12 = logic_module( - "sky130_fd_sc_hd__decap_12", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -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"], -) -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"], -) -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"], -) -dfrbp_1 = logic_module( - "sky130_fd_sc_hd__dfrbp_1", - "High Density", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrbp_2 = logic_module( - "sky130_fd_sc_hd__dfrbp_2", - "High Density", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrtn_1 = logic_module( - "sky130_fd_sc_hd__dfrtn_1", - "High Density", - ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_1 = logic_module( - "sky130_fd_sc_hd__dfrtp_1", - "High Density", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_2 = logic_module( - "sky130_fd_sc_hd__dfrtp_2", - "High Density", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_4 = logic_module( - "sky130_fd_sc_hd__dfrtp_4", - "High Density", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfsbp_1 = logic_module( - "sky130_fd_sc_hd__dfsbp_1", - "High Density", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfsbp_2 = logic_module( - "sky130_fd_sc_hd__dfsbp_2", - "High Density", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfstp_1 = logic_module( - "sky130_fd_sc_hd__dfstp_1", - "High Density", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_2 = logic_module( - "sky130_fd_sc_hd__dfstp_2", - "High Density", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_4 = logic_module( - "sky130_fd_sc_hd__dfstp_4", - "High Density", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxbp_1 = logic_module( - "sky130_fd_sc_hd__dfxbp_1", - "High Density", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxbp_2 = logic_module( - "sky130_fd_sc_hd__dfxbp_2", - "High Density", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxtp_1 = logic_module( - "sky130_fd_sc_hd__dfxtp_1", - "High Density", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_2 = logic_module( - "sky130_fd_sc_hd__dfxtp_2", - "High Density", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_4 = logic_module( - "sky130_fd_sc_hd__dfxtp_4", - "High Density", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -diode_2 = logic_module( - "sky130_fd_sc_hd__diode_2", - "High Density", - ["DIODE", "VGND", "VNB", "VPB", "VPWR"], -) -dlclkp_1 = logic_module( - "sky130_fd_sc_hd__dlclkp_1", - "High Density", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_2 = logic_module( - "sky130_fd_sc_hd__dlclkp_2", - "High Density", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_4 = logic_module( - "sky130_fd_sc_hd__dlclkp_4", - "High Density", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlrbn_1 = logic_module( - "sky130_fd_sc_hd__dlrbn_1", - "High Density", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbn_2 = logic_module( - "sky130_fd_sc_hd__dlrbn_2", - "High Density", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_1 = logic_module( - "sky130_fd_sc_hd__dlrbp_1", - "High Density", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_2 = logic_module( - "sky130_fd_sc_hd__dlrbp_2", - "High Density", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrtn_1 = logic_module( - "sky130_fd_sc_hd__dlrtn_1", - "High Density", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_2 = logic_module( - "sky130_fd_sc_hd__dlrtn_2", - "High Density", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_4 = logic_module( - "sky130_fd_sc_hd__dlrtn_4", - "High Density", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_1 = logic_module( - "sky130_fd_sc_hd__dlrtp_1", - "High Density", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_2 = logic_module( - "sky130_fd_sc_hd__dlrtp_2", - "High Density", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_4 = logic_module( - "sky130_fd_sc_hd__dlrtp_4", - "High Density", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxbn_1 = logic_module( - "sky130_fd_sc_hd__dlxbn_1", - "High Density", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbn_2 = logic_module( - "sky130_fd_sc_hd__dlxbn_2", - "High Density", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbp_1 = logic_module( - "sky130_fd_sc_hd__dlxbp_1", - "High Density", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxtn_1 = logic_module( - "sky130_fd_sc_hd__dlxtn_1", - "High Density", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_2 = logic_module( - "sky130_fd_sc_hd__dlxtn_2", - "High Density", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_4 = logic_module( - "sky130_fd_sc_hd__dlxtn_4", - "High Density", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtp_1 = logic_module( - "sky130_fd_sc_hd__dlxtp_1", - "High Density", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlygate4sd1_1 = logic_module( - "sky130_fd_sc_hd__dlygate4sd1_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4sd2_1 = logic_module( - "sky130_fd_sc_hd__dlygate4sd2_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4sd3_1 = logic_module( - "sky130_fd_sc_hd__dlygate4sd3_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s2s_1 = logic_module( - "sky130_fd_sc_hd__dlymetal6s2s_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s4s_1 = logic_module( - "sky130_fd_sc_hd__dlymetal6s4s_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s6s_1 = logic_module( - "sky130_fd_sc_hd__dlymetal6s6s_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -ebufn_1 = logic_module( - "sky130_fd_sc_hd__ebufn_1", - "High Density", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_2 = logic_module( - "sky130_fd_sc_hd__ebufn_2", - "High Density", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_4 = logic_module( - "sky130_fd_sc_hd__ebufn_4", - "High Density", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_8 = logic_module( - "sky130_fd_sc_hd__ebufn_8", - "High Density", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -edfxbp_1 = logic_module( - "sky130_fd_sc_hd__edfxbp_1", - "High Density", - ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -edfxtp_1 = logic_module( - "sky130_fd_sc_hd__edfxtp_1", - "High Density", - ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -einvn_0 = logic_module( - "sky130_fd_sc_hd__einvn_0", - "High Density", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_1 = logic_module( - "sky130_fd_sc_hd__einvn_1", - "High Density", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_2 = logic_module( - "sky130_fd_sc_hd__einvn_2", - "High Density", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_4 = logic_module( - "sky130_fd_sc_hd__einvn_4", - "High Density", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_8 = logic_module( - "sky130_fd_sc_hd__einvn_8", - "High Density", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_1 = logic_module( - "sky130_fd_sc_hd__einvp_1", - "High Density", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_2 = logic_module( - "sky130_fd_sc_hd__einvp_2", - "High Density", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_4 = logic_module( - "sky130_fd_sc_hd__einvp_4", - "High Density", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_8 = logic_module( - "sky130_fd_sc_hd__einvp_8", - "High Density", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -fa_1 = logic_module( - "sky130_fd_sc_hd__fa_1", - "High Density", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_2 = logic_module( - "sky130_fd_sc_hd__fa_2", - "High Density", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_4 = logic_module( - "sky130_fd_sc_hd__fa_4", - "High Density", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_1 = logic_module( - "sky130_fd_sc_hd__fah_1", - "High Density", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fahcin_1 = logic_module( - "sky130_fd_sc_hd__fahcin_1", - "High Density", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fahcon_1 = logic_module( - "sky130_fd_sc_hd__fahcon_1", - "High Density", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"], -) -fill_1 = logic_module( - "sky130_fd_sc_hd__fill_1", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_2 = logic_module( - "sky130_fd_sc_hd__fill_2", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_4 = logic_module( - "sky130_fd_sc_hd__fill_4", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_8 = logic_module( - "sky130_fd_sc_hd__fill_8", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -ha_1 = logic_module( - "sky130_fd_sc_hd__ha_1", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_2 = logic_module( - "sky130_fd_sc_hd__ha_2", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_4 = logic_module( - "sky130_fd_sc_hd__ha_4", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -inv_1 = logic_module( - "sky130_fd_sc_hd__inv_1", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_2 = logic_module( - "sky130_fd_sc_hd__inv_2", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_4 = logic_module( - "sky130_fd_sc_hd__inv_4", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_6 = logic_module( - "sky130_fd_sc_hd__inv_6", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_8 = logic_module( - "sky130_fd_sc_hd__inv_8", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_12 = logic_module( - "sky130_fd_sc_hd__inv_12", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_16 = logic_module( - "sky130_fd_sc_hd__inv_16", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -lpflow_bleeder_1 = logic_module( - "sky130_fd_sc_hd__lpflow_bleeder_1", - "High Density", - ["SHORT", "VGND", "VNB", "VPB", "VPWR"], -) -lpflow_clkbufkapwr_1 = logic_module( - "sky130_fd_sc_hd__lpflow_clkbufkapwr_1", - "High Density", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_clkbufkapwr_2 = logic_module( - "sky130_fd_sc_hd__lpflow_clkbufkapwr_2", - "High Density", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_clkbufkapwr_4 = logic_module( - "sky130_fd_sc_hd__lpflow_clkbufkapwr_4", - "High Density", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_clkbufkapwr_8 = logic_module( - "sky130_fd_sc_hd__lpflow_clkbufkapwr_8", - "High Density", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_clkbufkapwr_16 = logic_module( - "sky130_fd_sc_hd__lpflow_clkbufkapwr_16", - "High Density", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_clkinvkapwr_1 = logic_module( - "sky130_fd_sc_hd__lpflow_clkinvkapwr_1", - "High Density", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -lpflow_clkinvkapwr_2 = logic_module( - "sky130_fd_sc_hd__lpflow_clkinvkapwr_2", - "High Density", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -lpflow_clkinvkapwr_4 = logic_module( - "sky130_fd_sc_hd__lpflow_clkinvkapwr_4", - "High Density", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -lpflow_clkinvkapwr_8 = logic_module( - "sky130_fd_sc_hd__lpflow_clkinvkapwr_8", - "High Density", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -lpflow_clkinvkapwr_16 = logic_module( - "sky130_fd_sc_hd__lpflow_clkinvkapwr_16", - "High Density", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -lpflow_decapkapwr_3 = logic_module( - "sky130_fd_sc_hd__lpflow_decapkapwr_3", - "High Density", - ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -lpflow_decapkapwr_4 = logic_module( - "sky130_fd_sc_hd__lpflow_decapkapwr_4", - "High Density", - ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -lpflow_decapkapwr_6 = logic_module( - "sky130_fd_sc_hd__lpflow_decapkapwr_6", - "High Density", - ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -lpflow_decapkapwr_8 = logic_module( - "sky130_fd_sc_hd__lpflow_decapkapwr_8", - "High Density", - ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -lpflow_decapkapwr_12 = logic_module( - "sky130_fd_sc_hd__lpflow_decapkapwr_12", - "High Density", - ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -lpflow_inputiso0n_1 = logic_module( - "sky130_fd_sc_hd__lpflow_inputiso0n_1", - "High Density", - ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_inputiso0p_1 = logic_module( - "sky130_fd_sc_hd__lpflow_inputiso0p_1", - "High Density", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_inputiso1n_1 = logic_module( - "sky130_fd_sc_hd__lpflow_inputiso1n_1", - "High Density", - ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_inputiso1p_1 = logic_module( - "sky130_fd_sc_hd__lpflow_inputiso1p_1", - "High Density", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_inputisolatch_1 = logic_module( - "sky130_fd_sc_hd__lpflow_inputisolatch_1", - "High Density", - ["D", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -lpflow_isobufsrc_1 = logic_module( - "sky130_fd_sc_hd__lpflow_isobufsrc_1", - "High Density", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_isobufsrc_2 = logic_module( - "sky130_fd_sc_hd__lpflow_isobufsrc_2", - "High Density", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_isobufsrc_4 = logic_module( - "sky130_fd_sc_hd__lpflow_isobufsrc_4", - "High Density", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_isobufsrc_8 = logic_module( - "sky130_fd_sc_hd__lpflow_isobufsrc_8", - "High Density", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_isobufsrc_16 = logic_module( - "sky130_fd_sc_hd__lpflow_isobufsrc_16", - "High Density", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -lpflow_isobufsrckapwr_16 = logic_module( - "sky130_fd_sc_hd__lpflow_isobufsrckapwr_16", - "High Density", - ["A", "SLEEP", "KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -macro_sparecell = logic_module( - "sky130_fd_sc_hd__macro_sparecell", - "High Density", - ["VGND", "VNB", "VPB", "VPWR", "LO"], -) -maj3_1 = logic_module( - "sky130_fd_sc_hd__maj3_1", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_2 = logic_module( - "sky130_fd_sc_hd__maj3_2", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_4 = logic_module( - "sky130_fd_sc_hd__maj3_4", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_1 = logic_module( - "sky130_fd_sc_hd__mux2_1", - "High Density", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_2 = logic_module( - "sky130_fd_sc_hd__mux2_2", - "High Density", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_4 = logic_module( - "sky130_fd_sc_hd__mux2_4", - "High Density", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_8 = logic_module( - "sky130_fd_sc_hd__mux2_8", - "High Density", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2i_1 = logic_module( - "sky130_fd_sc_hd__mux2i_1", - "High Density", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_2 = logic_module( - "sky130_fd_sc_hd__mux2i_2", - "High Density", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_4 = logic_module( - "sky130_fd_sc_hd__mux2i_4", - "High Density", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux4_1 = logic_module( - "sky130_fd_sc_hd__mux4_1", - "High Density", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_2 = logic_module( - "sky130_fd_sc_hd__mux4_2", - "High Density", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_4 = logic_module( - "sky130_fd_sc_hd__mux4_4", - "High Density", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -nand2_1 = logic_module( - "sky130_fd_sc_hd__nand2_1", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_2 = logic_module( - "sky130_fd_sc_hd__nand2_2", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_4 = logic_module( - "sky130_fd_sc_hd__nand2_4", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_8 = logic_module( - "sky130_fd_sc_hd__nand2_8", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_1 = logic_module( - "sky130_fd_sc_hd__nand2b_1", - "High Density", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_2 = logic_module( - "sky130_fd_sc_hd__nand2b_2", - "High Density", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_4 = logic_module( - "sky130_fd_sc_hd__nand2b_4", - "High Density", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_1 = logic_module( - "sky130_fd_sc_hd__nand3_1", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_2 = logic_module( - "sky130_fd_sc_hd__nand3_2", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_4 = logic_module( - "sky130_fd_sc_hd__nand3_4", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_1 = logic_module( - "sky130_fd_sc_hd__nand3b_1", - "High Density", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_2 = logic_module( - "sky130_fd_sc_hd__nand3b_2", - "High Density", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_4 = logic_module( - "sky130_fd_sc_hd__nand3b_4", - "High Density", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_1 = logic_module( - "sky130_fd_sc_hd__nand4_1", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_2 = logic_module( - "sky130_fd_sc_hd__nand4_2", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_4 = logic_module( - "sky130_fd_sc_hd__nand4_4", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_1 = logic_module( - "sky130_fd_sc_hd__nand4b_1", - "High Density", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_2 = logic_module( - "sky130_fd_sc_hd__nand4b_2", - "High Density", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_4 = logic_module( - "sky130_fd_sc_hd__nand4b_4", - "High Density", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_1 = logic_module( - "sky130_fd_sc_hd__nand4bb_1", - "High Density", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_2 = logic_module( - "sky130_fd_sc_hd__nand4bb_2", - "High Density", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_4 = logic_module( - "sky130_fd_sc_hd__nand4bb_4", - "High Density", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_1 = logic_module( - "sky130_fd_sc_hd__nor2_1", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_2 = logic_module( - "sky130_fd_sc_hd__nor2_2", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_4 = logic_module( - "sky130_fd_sc_hd__nor2_4", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_8 = logic_module( - "sky130_fd_sc_hd__nor2_8", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_1 = logic_module( - "sky130_fd_sc_hd__nor2b_1", - "High Density", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_2 = logic_module( - "sky130_fd_sc_hd__nor2b_2", - "High Density", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_4 = logic_module( - "sky130_fd_sc_hd__nor2b_4", - "High Density", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_1 = logic_module( - "sky130_fd_sc_hd__nor3_1", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_2 = logic_module( - "sky130_fd_sc_hd__nor3_2", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_4 = logic_module( - "sky130_fd_sc_hd__nor3_4", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_1 = logic_module( - "sky130_fd_sc_hd__nor3b_1", - "High Density", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_2 = logic_module( - "sky130_fd_sc_hd__nor3b_2", - "High Density", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_4 = logic_module( - "sky130_fd_sc_hd__nor3b_4", - "High Density", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_1 = logic_module( - "sky130_fd_sc_hd__nor4_1", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_2 = logic_module( - "sky130_fd_sc_hd__nor4_2", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_4 = logic_module( - "sky130_fd_sc_hd__nor4_4", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_1 = logic_module( - "sky130_fd_sc_hd__nor4b_1", - "High Density", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_2 = logic_module( - "sky130_fd_sc_hd__nor4b_2", - "High Density", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_4 = logic_module( - "sky130_fd_sc_hd__nor4b_4", - "High Density", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_1 = logic_module( - "sky130_fd_sc_hd__nor4bb_1", - "High Density", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_2 = logic_module( - "sky130_fd_sc_hd__nor4bb_2", - "High Density", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_4 = logic_module( - "sky130_fd_sc_hd__nor4bb_4", - "High Density", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2a_1 = logic_module( - "sky130_fd_sc_hd__o2bb2a_1", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_2 = logic_module( - "sky130_fd_sc_hd__o2bb2a_2", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_4 = logic_module( - "sky130_fd_sc_hd__o2bb2a_4", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2ai_1 = logic_module( - "sky130_fd_sc_hd__o2bb2ai_1", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_2 = logic_module( - "sky130_fd_sc_hd__o2bb2ai_2", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_4 = logic_module( - "sky130_fd_sc_hd__o2bb2ai_4", - "High Density", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21a_1 = logic_module( - "sky130_fd_sc_hd__o21a_1", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_2 = logic_module( - "sky130_fd_sc_hd__o21a_2", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_4 = logic_module( - "sky130_fd_sc_hd__o21a_4", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ai_0 = logic_module( - "sky130_fd_sc_hd__o21ai_0", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_1 = logic_module( - "sky130_fd_sc_hd__o21ai_1", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_2 = logic_module( - "sky130_fd_sc_hd__o21ai_2", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_4 = logic_module( - "sky130_fd_sc_hd__o21ai_4", - "High Density", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ba_1 = logic_module( - "sky130_fd_sc_hd__o21ba_1", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_2 = logic_module( - "sky130_fd_sc_hd__o21ba_2", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_4 = logic_module( - "sky130_fd_sc_hd__o21ba_4", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21bai_1 = logic_module( - "sky130_fd_sc_hd__o21bai_1", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_2 = logic_module( - "sky130_fd_sc_hd__o21bai_2", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_4 = logic_module( - "sky130_fd_sc_hd__o21bai_4", - "High Density", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22a_1 = logic_module( - "sky130_fd_sc_hd__o22a_1", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_2 = logic_module( - "sky130_fd_sc_hd__o22a_2", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_4 = logic_module( - "sky130_fd_sc_hd__o22a_4", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22ai_1 = logic_module( - "sky130_fd_sc_hd__o22ai_1", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_2 = logic_module( - "sky130_fd_sc_hd__o22ai_2", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_4 = logic_module( - "sky130_fd_sc_hd__o22ai_4", - "High Density", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31a_1 = logic_module( - "sky130_fd_sc_hd__o31a_1", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_2 = logic_module( - "sky130_fd_sc_hd__o31a_2", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_4 = logic_module( - "sky130_fd_sc_hd__o31a_4", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31ai_1 = logic_module( - "sky130_fd_sc_hd__o31ai_1", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_2 = logic_module( - "sky130_fd_sc_hd__o31ai_2", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_4 = logic_module( - "sky130_fd_sc_hd__o31ai_4", - "High Density", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32a_1 = logic_module( - "sky130_fd_sc_hd__o32a_1", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_2 = logic_module( - "sky130_fd_sc_hd__o32a_2", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_4 = logic_module( - "sky130_fd_sc_hd__o32a_4", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32ai_1 = logic_module( - "sky130_fd_sc_hd__o32ai_1", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_2 = logic_module( - "sky130_fd_sc_hd__o32ai_2", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_4 = logic_module( - "sky130_fd_sc_hd__o32ai_4", - "High Density", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41a_1 = logic_module( - "sky130_fd_sc_hd__o41a_1", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_2 = logic_module( - "sky130_fd_sc_hd__o41a_2", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_4 = logic_module( - "sky130_fd_sc_hd__o41a_4", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41ai_1 = logic_module( - "sky130_fd_sc_hd__o41ai_1", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_2 = logic_module( - "sky130_fd_sc_hd__o41ai_2", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_4 = logic_module( - "sky130_fd_sc_hd__o41ai_4", - "High Density", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211a_1 = logic_module( - "sky130_fd_sc_hd__o211a_1", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_2 = logic_module( - "sky130_fd_sc_hd__o211a_2", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_4 = logic_module( - "sky130_fd_sc_hd__o211a_4", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211ai_1 = logic_module( - "sky130_fd_sc_hd__o211ai_1", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_2 = logic_module( - "sky130_fd_sc_hd__o211ai_2", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_4 = logic_module( - "sky130_fd_sc_hd__o211ai_4", - "High Density", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221a_1 = logic_module( - "sky130_fd_sc_hd__o221a_1", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_2 = logic_module( - "sky130_fd_sc_hd__o221a_2", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_4 = logic_module( - "sky130_fd_sc_hd__o221a_4", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221ai_1 = logic_module( - "sky130_fd_sc_hd__o221ai_1", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_2 = logic_module( - "sky130_fd_sc_hd__o221ai_2", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_4 = logic_module( - "sky130_fd_sc_hd__o221ai_4", - "High Density", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311a_1 = logic_module( - "sky130_fd_sc_hd__o311a_1", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_2 = logic_module( - "sky130_fd_sc_hd__o311a_2", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_4 = logic_module( - "sky130_fd_sc_hd__o311a_4", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311ai_0 = logic_module( - "sky130_fd_sc_hd__o311ai_0", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_1 = logic_module( - "sky130_fd_sc_hd__o311ai_1", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_2 = logic_module( - "sky130_fd_sc_hd__o311ai_2", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_4 = logic_module( - "sky130_fd_sc_hd__o311ai_4", - "High Density", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111a_1 = logic_module( - "sky130_fd_sc_hd__o2111a_1", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_2 = logic_module( - "sky130_fd_sc_hd__o2111a_2", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_4 = logic_module( - "sky130_fd_sc_hd__o2111a_4", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111ai_1 = logic_module( - "sky130_fd_sc_hd__o2111ai_1", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_2 = logic_module( - "sky130_fd_sc_hd__o2111ai_2", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_4 = logic_module( - "sky130_fd_sc_hd__o2111ai_4", - "High Density", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -or2_0 = logic_module( - "sky130_fd_sc_hd__or2_0", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_1 = logic_module( - "sky130_fd_sc_hd__or2_1", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_2 = logic_module( - "sky130_fd_sc_hd__or2_2", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_4 = logic_module( - "sky130_fd_sc_hd__or2_4", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_1 = logic_module( - "sky130_fd_sc_hd__or2b_1", - "High Density", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_2 = logic_module( - "sky130_fd_sc_hd__or2b_2", - "High Density", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_4 = logic_module( - "sky130_fd_sc_hd__or2b_4", - "High Density", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_1 = logic_module( - "sky130_fd_sc_hd__or3_1", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_2 = logic_module( - "sky130_fd_sc_hd__or3_2", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_4 = logic_module( - "sky130_fd_sc_hd__or3_4", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_1 = logic_module( - "sky130_fd_sc_hd__or3b_1", - "High Density", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_2 = logic_module( - "sky130_fd_sc_hd__or3b_2", - "High Density", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_4 = logic_module( - "sky130_fd_sc_hd__or3b_4", - "High Density", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_1 = logic_module( - "sky130_fd_sc_hd__or4_1", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_2 = logic_module( - "sky130_fd_sc_hd__or4_2", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_4 = logic_module( - "sky130_fd_sc_hd__or4_4", - "High Density", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_1 = logic_module( - "sky130_fd_sc_hd__or4b_1", - "High Density", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_2 = logic_module( - "sky130_fd_sc_hd__or4b_2", - "High Density", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_4 = logic_module( - "sky130_fd_sc_hd__or4b_4", - "High Density", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_1 = logic_module( - "sky130_fd_sc_hd__or4bb_1", - "High Density", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_2 = logic_module( - "sky130_fd_sc_hd__or4bb_2", - "High Density", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_4 = logic_module( - "sky130_fd_sc_hd__or4bb_4", - "High Density", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -probe_p_8 = logic_module( - "sky130_fd_sc_hd__probe_p_8", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -probec_p_8 = logic_module( - "sky130_fd_sc_hd__probec_p_8", - "High Density", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -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"], -) -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"], -) -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", - ], -) -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"], -) -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"], -) -sdfrtn_1 = logic_module( - "sky130_fd_sc_hd__sdfrtn_1", - "High Density", - ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_1 = logic_module( - "sky130_fd_sc_hd__sdfrtp_1", - "High Density", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_2 = logic_module( - "sky130_fd_sc_hd__sdfrtp_2", - "High Density", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_4 = logic_module( - "sky130_fd_sc_hd__sdfrtp_4", - "High Density", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -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"], -) -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"], -) -sdfstp_1 = logic_module( - "sky130_fd_sc_hd__sdfstp_1", - "High Density", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_2 = logic_module( - "sky130_fd_sc_hd__sdfstp_2", - "High Density", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_4 = logic_module( - "sky130_fd_sc_hd__sdfstp_4", - "High Density", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxbp_1 = logic_module( - "sky130_fd_sc_hd__sdfxbp_1", - "High Density", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxbp_2 = logic_module( - "sky130_fd_sc_hd__sdfxbp_2", - "High Density", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxtp_1 = logic_module( - "sky130_fd_sc_hd__sdfxtp_1", - "High Density", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_2 = logic_module( - "sky130_fd_sc_hd__sdfxtp_2", - "High Density", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_4 = logic_module( - "sky130_fd_sc_hd__sdfxtp_4", - "High Density", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdlclkp_1 = logic_module( - "sky130_fd_sc_hd__sdlclkp_1", - "High Density", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_2 = logic_module( - "sky130_fd_sc_hd__sdlclkp_2", - "High Density", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_4 = logic_module( - "sky130_fd_sc_hd__sdlclkp_4", - "High Density", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sedfxbp_1 = logic_module( - "sky130_fd_sc_hd__sedfxbp_1", - "High Density", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sedfxbp_2 = logic_module( - "sky130_fd_sc_hd__sedfxbp_2", - "High Density", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sedfxtp_1 = logic_module( - "sky130_fd_sc_hd__sedfxtp_1", - "High Density", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sedfxtp_2 = logic_module( - "sky130_fd_sc_hd__sedfxtp_2", - "High Density", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sedfxtp_4 = logic_module( - "sky130_fd_sc_hd__sedfxtp_4", - "High Density", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -tap_1 = logic_module( - "sky130_fd_sc_hd__tap_1", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -tap_2 = logic_module( - "sky130_fd_sc_hd__tap_2", "High Density", ["VGND", "VNB", "VPB", "VPWR"] -) -tapvgnd2_1 = logic_module( - "sky130_fd_sc_hd__tapvgnd2_1", "High Density", ["VGND", "VPB", "VPWR"] -) -tapvgnd_1 = logic_module( - "sky130_fd_sc_hd__tapvgnd_1", "High Density", ["VGND", "VPB", "VPWR"] -) -tapvpwrvgnd_1 = logic_module( - "sky130_fd_sc_hd__tapvpwrvgnd_1", "High Density", ["VGND", "VPWR"] -) -xnor2_1 = logic_module( - "sky130_fd_sc_hd__xnor2_1", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_2 = logic_module( - "sky130_fd_sc_hd__xnor2_2", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_4 = logic_module( - "sky130_fd_sc_hd__xnor2_4", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor3_1 = logic_module( - "sky130_fd_sc_hd__xnor3_1", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_2 = logic_module( - "sky130_fd_sc_hd__xnor3_2", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_4 = logic_module( - "sky130_fd_sc_hd__xnor3_4", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_1 = logic_module( - "sky130_fd_sc_hd__xor2_1", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_2 = logic_module( - "sky130_fd_sc_hd__xor2_2", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_4 = logic_module( - "sky130_fd_sc_hd__xor2_4", - "High Density", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_1 = logic_module( - "sky130_fd_sc_hd__xor3_1", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_2 = logic_module( - "sky130_fd_sc_hd__xor3_2", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_4 = logic_module( - "sky130_fd_sc_hd__xor3_4", - "High Density", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) diff --git a/sky130/hdl21/sky130_gf/digital_cells/high_speed.py b/sky130/hdl21/sky130_gf/digital_cells/high_speed.py deleted file mode 100644 index 09ab10980..000000000 --- a/sky130/hdl21/sky130_gf/digital_cells/high_speed.py +++ /dev/null @@ -1,1918 +0,0 @@ -from ..pdk_data import logic_module - -a2bb2o_1 = logic_module( - "sky130_fd_sc_hs__a2bb2o_1", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_2 = logic_module( - "sky130_fd_sc_hs__a2bb2o_2", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_4 = logic_module( - "sky130_fd_sc_hs__a2bb2o_4", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2oi_1 = logic_module( - "sky130_fd_sc_hs__a2bb2oi_1", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_2 = logic_module( - "sky130_fd_sc_hs__a2bb2oi_2", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_4 = logic_module( - "sky130_fd_sc_hs__a2bb2oi_4", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21bo_1 = logic_module( - "sky130_fd_sc_hs__a21bo_1", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_2 = logic_module( - "sky130_fd_sc_hs__a21bo_2", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_4 = logic_module( - "sky130_fd_sc_hs__a21bo_4", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21boi_1 = logic_module( - "sky130_fd_sc_hs__a21boi_1", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_2 = logic_module( - "sky130_fd_sc_hs__a21boi_2", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_4 = logic_module( - "sky130_fd_sc_hs__a21boi_4", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21o_1 = logic_module( - "sky130_fd_sc_hs__a21o_1", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_2 = logic_module( - "sky130_fd_sc_hs__a21o_2", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_4 = logic_module( - "sky130_fd_sc_hs__a21o_4", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21oi_1 = logic_module( - "sky130_fd_sc_hs__a21oi_1", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_2 = logic_module( - "sky130_fd_sc_hs__a21oi_2", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_4 = logic_module( - "sky130_fd_sc_hs__a21oi_4", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22o_1 = logic_module( - "sky130_fd_sc_hs__a22o_1", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_2 = logic_module( - "sky130_fd_sc_hs__a22o_2", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_4 = logic_module( - "sky130_fd_sc_hs__a22o_4", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22oi_1 = logic_module( - "sky130_fd_sc_hs__a22oi_1", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_2 = logic_module( - "sky130_fd_sc_hs__a22oi_2", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_4 = logic_module( - "sky130_fd_sc_hs__a22oi_4", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31o_1 = logic_module( - "sky130_fd_sc_hs__a31o_1", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_2 = logic_module( - "sky130_fd_sc_hs__a31o_2", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_4 = logic_module( - "sky130_fd_sc_hs__a31o_4", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31oi_1 = logic_module( - "sky130_fd_sc_hs__a31oi_1", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_2 = logic_module( - "sky130_fd_sc_hs__a31oi_2", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_4 = logic_module( - "sky130_fd_sc_hs__a31oi_4", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32o_1 = logic_module( - "sky130_fd_sc_hs__a32o_1", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_2 = logic_module( - "sky130_fd_sc_hs__a32o_2", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_4 = logic_module( - "sky130_fd_sc_hs__a32o_4", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32oi_1 = logic_module( - "sky130_fd_sc_hs__a32oi_1", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_2 = logic_module( - "sky130_fd_sc_hs__a32oi_2", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_4 = logic_module( - "sky130_fd_sc_hs__a32oi_4", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41o_1 = logic_module( - "sky130_fd_sc_hs__a41o_1", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_2 = logic_module( - "sky130_fd_sc_hs__a41o_2", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_4 = logic_module( - "sky130_fd_sc_hs__a41o_4", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41oi_1 = logic_module( - "sky130_fd_sc_hs__a41oi_1", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_2 = logic_module( - "sky130_fd_sc_hs__a41oi_2", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_4 = logic_module( - "sky130_fd_sc_hs__a41oi_4", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211o_1 = logic_module( - "sky130_fd_sc_hs__a211o_1", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_2 = logic_module( - "sky130_fd_sc_hs__a211o_2", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_4 = logic_module( - "sky130_fd_sc_hs__a211o_4", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211oi_1 = logic_module( - "sky130_fd_sc_hs__a211oi_1", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_2 = logic_module( - "sky130_fd_sc_hs__a211oi_2", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_4 = logic_module( - "sky130_fd_sc_hs__a211oi_4", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221o_1 = logic_module( - "sky130_fd_sc_hs__a221o_1", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_2 = logic_module( - "sky130_fd_sc_hs__a221o_2", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_4 = logic_module( - "sky130_fd_sc_hs__a221o_4", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221oi_1 = logic_module( - "sky130_fd_sc_hs__a221oi_1", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_2 = logic_module( - "sky130_fd_sc_hs__a221oi_2", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_4 = logic_module( - "sky130_fd_sc_hs__a221oi_4", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a222o_1 = logic_module( - "sky130_fd_sc_hs__a222o_1", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a222o_2 = logic_module( - "sky130_fd_sc_hs__a222o_2", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a222oi_1 = logic_module( - "sky130_fd_sc_hs__a222oi_1", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a222oi_2 = logic_module( - "sky130_fd_sc_hs__a222oi_2", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311o_1 = logic_module( - "sky130_fd_sc_hs__a311o_1", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_2 = logic_module( - "sky130_fd_sc_hs__a311o_2", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_4 = logic_module( - "sky130_fd_sc_hs__a311o_4", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311oi_1 = logic_module( - "sky130_fd_sc_hs__a311oi_1", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_2 = logic_module( - "sky130_fd_sc_hs__a311oi_2", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_4 = logic_module( - "sky130_fd_sc_hs__a311oi_4", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111o_1 = logic_module( - "sky130_fd_sc_hs__a2111o_1", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_2 = logic_module( - "sky130_fd_sc_hs__a2111o_2", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_4 = logic_module( - "sky130_fd_sc_hs__a2111o_4", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111oi_1 = logic_module( - "sky130_fd_sc_hs__a2111oi_1", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_2 = logic_module( - "sky130_fd_sc_hs__a2111oi_2", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_4 = logic_module( - "sky130_fd_sc_hs__a2111oi_4", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -and2_1 = logic_module( - "sky130_fd_sc_hs__and2_1", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_2 = logic_module( - "sky130_fd_sc_hs__and2_2", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_4 = logic_module( - "sky130_fd_sc_hs__and2_4", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_1 = logic_module( - "sky130_fd_sc_hs__and2b_1", - "High Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_2 = logic_module( - "sky130_fd_sc_hs__and2b_2", - "High Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_4 = logic_module( - "sky130_fd_sc_hs__and2b_4", - "High Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_1 = logic_module( - "sky130_fd_sc_hs__and3_1", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_2 = logic_module( - "sky130_fd_sc_hs__and3_2", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_4 = logic_module( - "sky130_fd_sc_hs__and3_4", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_1 = logic_module( - "sky130_fd_sc_hs__and3b_1", - "High Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_2 = logic_module( - "sky130_fd_sc_hs__and3b_2", - "High Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_4 = logic_module( - "sky130_fd_sc_hs__and3b_4", - "High Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_1 = logic_module( - "sky130_fd_sc_hs__and4_1", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_2 = logic_module( - "sky130_fd_sc_hs__and4_2", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_4 = logic_module( - "sky130_fd_sc_hs__and4_4", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_1 = logic_module( - "sky130_fd_sc_hs__and4b_1", - "High Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_2 = logic_module( - "sky130_fd_sc_hs__and4b_2", - "High Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_4 = logic_module( - "sky130_fd_sc_hs__and4b_4", - "High Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_1 = logic_module( - "sky130_fd_sc_hs__and4bb_1", - "High Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_2 = logic_module( - "sky130_fd_sc_hs__and4bb_2", - "High Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_4 = logic_module( - "sky130_fd_sc_hs__and4bb_4", - "High Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_1 = logic_module( - "sky130_fd_sc_hs__buf_1", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_2 = logic_module( - "sky130_fd_sc_hs__buf_2", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_4 = logic_module( - "sky130_fd_sc_hs__buf_4", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_8 = logic_module( - "sky130_fd_sc_hs__buf_8", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_16 = logic_module( - "sky130_fd_sc_hs__buf_16", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufbuf_8 = logic_module( - "sky130_fd_sc_hs__bufbuf_8", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufbuf_16 = logic_module( - "sky130_fd_sc_hs__bufbuf_16", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufinv_8 = logic_module( - "sky130_fd_sc_hs__bufinv_8", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -bufinv_16 = logic_module( - "sky130_fd_sc_hs__bufinv_16", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkbuf_1 = logic_module( - "sky130_fd_sc_hs__clkbuf_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_2 = logic_module( - "sky130_fd_sc_hs__clkbuf_2", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_4 = logic_module( - "sky130_fd_sc_hs__clkbuf_4", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_8 = logic_module( - "sky130_fd_sc_hs__clkbuf_8", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_16 = logic_module( - "sky130_fd_sc_hs__clkbuf_16", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlyinv3sd1_1 = logic_module( - "sky130_fd_sc_hs__clkdlyinv3sd1_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv3sd2_1 = logic_module( - "sky130_fd_sc_hs__clkdlyinv3sd2_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv3sd3_1 = logic_module( - "sky130_fd_sc_hs__clkdlyinv3sd3_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv5sd1_1 = logic_module( - "sky130_fd_sc_hs__clkdlyinv5sd1_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv5sd2_1 = logic_module( - "sky130_fd_sc_hs__clkdlyinv5sd2_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv5sd3_1 = logic_module( - "sky130_fd_sc_hs__clkdlyinv5sd3_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_1 = logic_module( - "sky130_fd_sc_hs__clkinv_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_2 = logic_module( - "sky130_fd_sc_hs__clkinv_2", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_4 = logic_module( - "sky130_fd_sc_hs__clkinv_4", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_8 = logic_module( - "sky130_fd_sc_hs__clkinv_8", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_16 = logic_module( - "sky130_fd_sc_hs__clkinv_16", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -conb_1 = logic_module( - "sky130_fd_sc_hs__conb_1", - "High Speed", - ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], -) -decap_4 = logic_module( - "sky130_fd_sc_hs__decap_4", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_8 = logic_module( - "sky130_fd_sc_hs__decap_8", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -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"], -) -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"], -) -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"], -) -dfrbp_1 = logic_module( - "sky130_fd_sc_hs__dfrbp_1", - "High Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrbp_2 = logic_module( - "sky130_fd_sc_hs__dfrbp_2", - "High Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrtn_1 = logic_module( - "sky130_fd_sc_hs__dfrtn_1", - "High Speed", - ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_1 = logic_module( - "sky130_fd_sc_hs__dfrtp_1", - "High Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_2 = logic_module( - "sky130_fd_sc_hs__dfrtp_2", - "High Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_4 = logic_module( - "sky130_fd_sc_hs__dfrtp_4", - "High Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfsbp_1 = logic_module( - "sky130_fd_sc_hs__dfsbp_1", - "High Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfsbp_2 = logic_module( - "sky130_fd_sc_hs__dfsbp_2", - "High Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfstp_1 = logic_module( - "sky130_fd_sc_hs__dfstp_1", - "High Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_2 = logic_module( - "sky130_fd_sc_hs__dfstp_2", - "High Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_4 = logic_module( - "sky130_fd_sc_hs__dfstp_4", - "High Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxbp_1 = logic_module( - "sky130_fd_sc_hs__dfxbp_1", - "High Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxbp_2 = logic_module( - "sky130_fd_sc_hs__dfxbp_2", - "High Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxtp_1 = logic_module( - "sky130_fd_sc_hs__dfxtp_1", - "High Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_2 = logic_module( - "sky130_fd_sc_hs__dfxtp_2", - "High Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_4 = logic_module( - "sky130_fd_sc_hs__dfxtp_4", - "High Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -diode_2 = logic_module( - "sky130_fd_sc_hs__diode_2", - "High Speed", - ["DIODE", "VGND", "VNB", "VPB", "VPWR"], -) -dlclkp_1 = logic_module( - "sky130_fd_sc_hs__dlclkp_1", - "High Speed", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_2 = logic_module( - "sky130_fd_sc_hs__dlclkp_2", - "High Speed", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_4 = logic_module( - "sky130_fd_sc_hs__dlclkp_4", - "High Speed", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlrbn_1 = logic_module( - "sky130_fd_sc_hs__dlrbn_1", - "High Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbn_2 = logic_module( - "sky130_fd_sc_hs__dlrbn_2", - "High Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_1 = logic_module( - "sky130_fd_sc_hs__dlrbp_1", - "High Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_2 = logic_module( - "sky130_fd_sc_hs__dlrbp_2", - "High Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrtn_1 = logic_module( - "sky130_fd_sc_hs__dlrtn_1", - "High Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_2 = logic_module( - "sky130_fd_sc_hs__dlrtn_2", - "High Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_4 = logic_module( - "sky130_fd_sc_hs__dlrtn_4", - "High Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_1 = logic_module( - "sky130_fd_sc_hs__dlrtp_1", - "High Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_2 = logic_module( - "sky130_fd_sc_hs__dlrtp_2", - "High Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_4 = logic_module( - "sky130_fd_sc_hs__dlrtp_4", - "High Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxbn_1 = logic_module( - "sky130_fd_sc_hs__dlxbn_1", - "High Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbn_2 = logic_module( - "sky130_fd_sc_hs__dlxbn_2", - "High Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbp_1 = logic_module( - "sky130_fd_sc_hs__dlxbp_1", - "High Speed", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxtn_1 = logic_module( - "sky130_fd_sc_hs__dlxtn_1", - "High Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_2 = logic_module( - "sky130_fd_sc_hs__dlxtn_2", - "High Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_4 = logic_module( - "sky130_fd_sc_hs__dlxtn_4", - "High Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtp_1 = logic_module( - "sky130_fd_sc_hs__dlxtp_1", - "High Speed", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlygate4sd1_1 = logic_module( - "sky130_fd_sc_hs__dlygate4sd1_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4sd2_1 = logic_module( - "sky130_fd_sc_hs__dlygate4sd2_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4sd3_1 = logic_module( - "sky130_fd_sc_hs__dlygate4sd3_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s2s_1 = logic_module( - "sky130_fd_sc_hs__dlymetal6s2s_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s4s_1 = logic_module( - "sky130_fd_sc_hs__dlymetal6s4s_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s6s_1 = logic_module( - "sky130_fd_sc_hs__dlymetal6s6s_1", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -ebufn_1 = logic_module( - "sky130_fd_sc_hs__ebufn_1", - "High Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_2 = logic_module( - "sky130_fd_sc_hs__ebufn_2", - "High Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_4 = logic_module( - "sky130_fd_sc_hs__ebufn_4", - "High Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_8 = logic_module( - "sky130_fd_sc_hs__ebufn_8", - "High Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -edfxbp_1 = logic_module( - "sky130_fd_sc_hs__edfxbp_1", - "High Speed", - ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -edfxtp_1 = logic_module( - "sky130_fd_sc_hs__edfxtp_1", - "High Speed", - ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -einvn_1 = logic_module( - "sky130_fd_sc_hs__einvn_1", - "High Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_2 = logic_module( - "sky130_fd_sc_hs__einvn_2", - "High Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_4 = logic_module( - "sky130_fd_sc_hs__einvn_4", - "High Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_8 = logic_module( - "sky130_fd_sc_hs__einvn_8", - "High Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_1 = logic_module( - "sky130_fd_sc_hs__einvp_1", - "High Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_2 = logic_module( - "sky130_fd_sc_hs__einvp_2", - "High Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_4 = logic_module( - "sky130_fd_sc_hs__einvp_4", - "High Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_8 = logic_module( - "sky130_fd_sc_hs__einvp_8", - "High Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -fa_1 = logic_module( - "sky130_fd_sc_hs__fa_1", - "High Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_2 = logic_module( - "sky130_fd_sc_hs__fa_2", - "High Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_4 = logic_module( - "sky130_fd_sc_hs__fa_4", - "High Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_1 = logic_module( - "sky130_fd_sc_hs__fah_1", - "High Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_2 = logic_module( - "sky130_fd_sc_hs__fah_2", - "High Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_4 = logic_module( - "sky130_fd_sc_hs__fah_4", - "High Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fahcin_1 = logic_module( - "sky130_fd_sc_hs__fahcin_1", - "High Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fahcon_1 = logic_module( - "sky130_fd_sc_hs__fahcon_1", - "High Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"], -) -fill_1 = logic_module( - "sky130_fd_sc_hs__fill_1", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_2 = logic_module( - "sky130_fd_sc_hs__fill_2", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_4 = logic_module( - "sky130_fd_sc_hs__fill_4", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_8 = logic_module( - "sky130_fd_sc_hs__fill_8", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_diode_2 = logic_module( - "sky130_fd_sc_hs__fill_diode_2", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_diode_4 = logic_module( - "sky130_fd_sc_hs__fill_diode_4", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_diode_8 = logic_module( - "sky130_fd_sc_hs__fill_diode_8", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -ha_1 = logic_module( - "sky130_fd_sc_hs__ha_1", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_2 = logic_module( - "sky130_fd_sc_hs__ha_2", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_4 = logic_module( - "sky130_fd_sc_hs__ha_4", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -inv_1 = logic_module( - "sky130_fd_sc_hs__inv_1", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_2 = logic_module( - "sky130_fd_sc_hs__inv_2", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_4 = logic_module( - "sky130_fd_sc_hs__inv_4", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_8 = logic_module( - "sky130_fd_sc_hs__inv_8", "High Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_16 = logic_module( - "sky130_fd_sc_hs__inv_16", - "High Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -maj3_1 = logic_module( - "sky130_fd_sc_hs__maj3_1", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_2 = logic_module( - "sky130_fd_sc_hs__maj3_2", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_4 = logic_module( - "sky130_fd_sc_hs__maj3_4", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_1 = logic_module( - "sky130_fd_sc_hs__mux2_1", - "High Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_2 = logic_module( - "sky130_fd_sc_hs__mux2_2", - "High Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_4 = logic_module( - "sky130_fd_sc_hs__mux2_4", - "High Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2i_1 = logic_module( - "sky130_fd_sc_hs__mux2i_1", - "High Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_2 = logic_module( - "sky130_fd_sc_hs__mux2i_2", - "High Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_4 = logic_module( - "sky130_fd_sc_hs__mux2i_4", - "High Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux4_1 = logic_module( - "sky130_fd_sc_hs__mux4_1", - "High Speed", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_2 = logic_module( - "sky130_fd_sc_hs__mux4_2", - "High Speed", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_4 = logic_module( - "sky130_fd_sc_hs__mux4_4", - "High Speed", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -nand2_1 = logic_module( - "sky130_fd_sc_hs__nand2_1", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_2 = logic_module( - "sky130_fd_sc_hs__nand2_2", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_4 = logic_module( - "sky130_fd_sc_hs__nand2_4", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_8 = logic_module( - "sky130_fd_sc_hs__nand2_8", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_1 = logic_module( - "sky130_fd_sc_hs__nand2b_1", - "High Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_2 = logic_module( - "sky130_fd_sc_hs__nand2b_2", - "High Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_4 = logic_module( - "sky130_fd_sc_hs__nand2b_4", - "High Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_1 = logic_module( - "sky130_fd_sc_hs__nand3_1", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_2 = logic_module( - "sky130_fd_sc_hs__nand3_2", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_4 = logic_module( - "sky130_fd_sc_hs__nand3_4", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_1 = logic_module( - "sky130_fd_sc_hs__nand3b_1", - "High Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_2 = logic_module( - "sky130_fd_sc_hs__nand3b_2", - "High Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_4 = logic_module( - "sky130_fd_sc_hs__nand3b_4", - "High Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_1 = logic_module( - "sky130_fd_sc_hs__nand4_1", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_2 = logic_module( - "sky130_fd_sc_hs__nand4_2", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_4 = logic_module( - "sky130_fd_sc_hs__nand4_4", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_1 = logic_module( - "sky130_fd_sc_hs__nand4b_1", - "High Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_2 = logic_module( - "sky130_fd_sc_hs__nand4b_2", - "High Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_4 = logic_module( - "sky130_fd_sc_hs__nand4b_4", - "High Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_1 = logic_module( - "sky130_fd_sc_hs__nand4bb_1", - "High Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_2 = logic_module( - "sky130_fd_sc_hs__nand4bb_2", - "High Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_4 = logic_module( - "sky130_fd_sc_hs__nand4bb_4", - "High Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_1 = logic_module( - "sky130_fd_sc_hs__nor2_1", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_2 = logic_module( - "sky130_fd_sc_hs__nor2_2", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_4 = logic_module( - "sky130_fd_sc_hs__nor2_4", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_8 = logic_module( - "sky130_fd_sc_hs__nor2_8", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_1 = logic_module( - "sky130_fd_sc_hs__nor2b_1", - "High Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_2 = logic_module( - "sky130_fd_sc_hs__nor2b_2", - "High Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_4 = logic_module( - "sky130_fd_sc_hs__nor2b_4", - "High Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_1 = logic_module( - "sky130_fd_sc_hs__nor3_1", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_2 = logic_module( - "sky130_fd_sc_hs__nor3_2", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_4 = logic_module( - "sky130_fd_sc_hs__nor3_4", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_1 = logic_module( - "sky130_fd_sc_hs__nor3b_1", - "High Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_2 = logic_module( - "sky130_fd_sc_hs__nor3b_2", - "High Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_4 = logic_module( - "sky130_fd_sc_hs__nor3b_4", - "High Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_1 = logic_module( - "sky130_fd_sc_hs__nor4_1", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_2 = logic_module( - "sky130_fd_sc_hs__nor4_2", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_4 = logic_module( - "sky130_fd_sc_hs__nor4_4", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_1 = logic_module( - "sky130_fd_sc_hs__nor4b_1", - "High Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_2 = logic_module( - "sky130_fd_sc_hs__nor4b_2", - "High Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_4 = logic_module( - "sky130_fd_sc_hs__nor4b_4", - "High Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_1 = logic_module( - "sky130_fd_sc_hs__nor4bb_1", - "High Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_2 = logic_module( - "sky130_fd_sc_hs__nor4bb_2", - "High Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_4 = logic_module( - "sky130_fd_sc_hs__nor4bb_4", - "High Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2a_1 = logic_module( - "sky130_fd_sc_hs__o2bb2a_1", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_2 = logic_module( - "sky130_fd_sc_hs__o2bb2a_2", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_4 = logic_module( - "sky130_fd_sc_hs__o2bb2a_4", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2ai_1 = logic_module( - "sky130_fd_sc_hs__o2bb2ai_1", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_2 = logic_module( - "sky130_fd_sc_hs__o2bb2ai_2", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_4 = logic_module( - "sky130_fd_sc_hs__o2bb2ai_4", - "High Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21a_1 = logic_module( - "sky130_fd_sc_hs__o21a_1", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_2 = logic_module( - "sky130_fd_sc_hs__o21a_2", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_4 = logic_module( - "sky130_fd_sc_hs__o21a_4", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ai_1 = logic_module( - "sky130_fd_sc_hs__o21ai_1", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_2 = logic_module( - "sky130_fd_sc_hs__o21ai_2", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_4 = logic_module( - "sky130_fd_sc_hs__o21ai_4", - "High Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ba_1 = logic_module( - "sky130_fd_sc_hs__o21ba_1", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_2 = logic_module( - "sky130_fd_sc_hs__o21ba_2", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_4 = logic_module( - "sky130_fd_sc_hs__o21ba_4", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21bai_1 = logic_module( - "sky130_fd_sc_hs__o21bai_1", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_2 = logic_module( - "sky130_fd_sc_hs__o21bai_2", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_4 = logic_module( - "sky130_fd_sc_hs__o21bai_4", - "High Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22a_1 = logic_module( - "sky130_fd_sc_hs__o22a_1", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_2 = logic_module( - "sky130_fd_sc_hs__o22a_2", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_4 = logic_module( - "sky130_fd_sc_hs__o22a_4", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22ai_1 = logic_module( - "sky130_fd_sc_hs__o22ai_1", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_2 = logic_module( - "sky130_fd_sc_hs__o22ai_2", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_4 = logic_module( - "sky130_fd_sc_hs__o22ai_4", - "High Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31a_1 = logic_module( - "sky130_fd_sc_hs__o31a_1", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_2 = logic_module( - "sky130_fd_sc_hs__o31a_2", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_4 = logic_module( - "sky130_fd_sc_hs__o31a_4", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31ai_1 = logic_module( - "sky130_fd_sc_hs__o31ai_1", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_2 = logic_module( - "sky130_fd_sc_hs__o31ai_2", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_4 = logic_module( - "sky130_fd_sc_hs__o31ai_4", - "High Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32a_1 = logic_module( - "sky130_fd_sc_hs__o32a_1", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_2 = logic_module( - "sky130_fd_sc_hs__o32a_2", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_4 = logic_module( - "sky130_fd_sc_hs__o32a_4", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32ai_1 = logic_module( - "sky130_fd_sc_hs__o32ai_1", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_2 = logic_module( - "sky130_fd_sc_hs__o32ai_2", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_4 = logic_module( - "sky130_fd_sc_hs__o32ai_4", - "High Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41a_1 = logic_module( - "sky130_fd_sc_hs__o41a_1", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_2 = logic_module( - "sky130_fd_sc_hs__o41a_2", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_4 = logic_module( - "sky130_fd_sc_hs__o41a_4", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41ai_1 = logic_module( - "sky130_fd_sc_hs__o41ai_1", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_2 = logic_module( - "sky130_fd_sc_hs__o41ai_2", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_4 = logic_module( - "sky130_fd_sc_hs__o41ai_4", - "High Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211a_1 = logic_module( - "sky130_fd_sc_hs__o211a_1", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_2 = logic_module( - "sky130_fd_sc_hs__o211a_2", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_4 = logic_module( - "sky130_fd_sc_hs__o211a_4", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211ai_1 = logic_module( - "sky130_fd_sc_hs__o211ai_1", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_2 = logic_module( - "sky130_fd_sc_hs__o211ai_2", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_4 = logic_module( - "sky130_fd_sc_hs__o211ai_4", - "High Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221a_1 = logic_module( - "sky130_fd_sc_hs__o221a_1", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_2 = logic_module( - "sky130_fd_sc_hs__o221a_2", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_4 = logic_module( - "sky130_fd_sc_hs__o221a_4", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221ai_1 = logic_module( - "sky130_fd_sc_hs__o221ai_1", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_2 = logic_module( - "sky130_fd_sc_hs__o221ai_2", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_4 = logic_module( - "sky130_fd_sc_hs__o221ai_4", - "High Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311a_1 = logic_module( - "sky130_fd_sc_hs__o311a_1", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_2 = logic_module( - "sky130_fd_sc_hs__o311a_2", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_4 = logic_module( - "sky130_fd_sc_hs__o311a_4", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311ai_1 = logic_module( - "sky130_fd_sc_hs__o311ai_1", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_2 = logic_module( - "sky130_fd_sc_hs__o311ai_2", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_4 = logic_module( - "sky130_fd_sc_hs__o311ai_4", - "High Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111a_1 = logic_module( - "sky130_fd_sc_hs__o2111a_1", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_2 = logic_module( - "sky130_fd_sc_hs__o2111a_2", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_4 = logic_module( - "sky130_fd_sc_hs__o2111a_4", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111ai_1 = logic_module( - "sky130_fd_sc_hs__o2111ai_1", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_2 = logic_module( - "sky130_fd_sc_hs__o2111ai_2", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_4 = logic_module( - "sky130_fd_sc_hs__o2111ai_4", - "High Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -or2_1 = logic_module( - "sky130_fd_sc_hs__or2_1", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_2 = logic_module( - "sky130_fd_sc_hs__or2_2", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_4 = logic_module( - "sky130_fd_sc_hs__or2_4", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_1 = logic_module( - "sky130_fd_sc_hs__or2b_1", - "High Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_2 = logic_module( - "sky130_fd_sc_hs__or2b_2", - "High Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_4 = logic_module( - "sky130_fd_sc_hs__or2b_4", - "High Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_1 = logic_module( - "sky130_fd_sc_hs__or3_1", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_2 = logic_module( - "sky130_fd_sc_hs__or3_2", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_4 = logic_module( - "sky130_fd_sc_hs__or3_4", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_1 = logic_module( - "sky130_fd_sc_hs__or3b_1", - "High Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_2 = logic_module( - "sky130_fd_sc_hs__or3b_2", - "High Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_4 = logic_module( - "sky130_fd_sc_hs__or3b_4", - "High Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_1 = logic_module( - "sky130_fd_sc_hs__or4_1", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_2 = logic_module( - "sky130_fd_sc_hs__or4_2", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_4 = logic_module( - "sky130_fd_sc_hs__or4_4", - "High Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_1 = logic_module( - "sky130_fd_sc_hs__or4b_1", - "High Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_2 = logic_module( - "sky130_fd_sc_hs__or4b_2", - "High Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_4 = logic_module( - "sky130_fd_sc_hs__or4b_4", - "High Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_1 = logic_module( - "sky130_fd_sc_hs__or4bb_1", - "High Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_2 = logic_module( - "sky130_fd_sc_hs__or4bb_2", - "High Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_4 = logic_module( - "sky130_fd_sc_hs__or4bb_4", - "High Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -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"], -) -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"], -) -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", - ], -) -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"], -) -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"], -) -sdfrtn_1 = logic_module( - "sky130_fd_sc_hs__sdfrtn_1", - "High Speed", - ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_1 = logic_module( - "sky130_fd_sc_hs__sdfrtp_1", - "High Speed", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_2 = logic_module( - "sky130_fd_sc_hs__sdfrtp_2", - "High Speed", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_4 = logic_module( - "sky130_fd_sc_hs__sdfrtp_4", - "High Speed", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -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"], -) -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"], -) -sdfstp_1 = logic_module( - "sky130_fd_sc_hs__sdfstp_1", - "High Speed", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_2 = logic_module( - "sky130_fd_sc_hs__sdfstp_2", - "High Speed", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_4 = logic_module( - "sky130_fd_sc_hs__sdfstp_4", - "High Speed", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxbp_1 = logic_module( - "sky130_fd_sc_hs__sdfxbp_1", - "High Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxbp_2 = logic_module( - "sky130_fd_sc_hs__sdfxbp_2", - "High Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxtp_1 = logic_module( - "sky130_fd_sc_hs__sdfxtp_1", - "High Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_2 = logic_module( - "sky130_fd_sc_hs__sdfxtp_2", - "High Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_4 = logic_module( - "sky130_fd_sc_hs__sdfxtp_4", - "High Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdlclkp_1 = logic_module( - "sky130_fd_sc_hs__sdlclkp_1", - "High Speed", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_2 = logic_module( - "sky130_fd_sc_hs__sdlclkp_2", - "High Speed", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_4 = logic_module( - "sky130_fd_sc_hs__sdlclkp_4", - "High Speed", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sedfxbp_1 = logic_module( - "sky130_fd_sc_hs__sedfxbp_1", - "High Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sedfxbp_2 = logic_module( - "sky130_fd_sc_hs__sedfxbp_2", - "High Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sedfxtp_1 = logic_module( - "sky130_fd_sc_hs__sedfxtp_1", - "High Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sedfxtp_2 = logic_module( - "sky130_fd_sc_hs__sedfxtp_2", - "High Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sedfxtp_4 = logic_module( - "sky130_fd_sc_hs__sedfxtp_4", - "High Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -tap_1 = logic_module( - "sky130_fd_sc_hs__tap_1", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -tap_2 = logic_module( - "sky130_fd_sc_hs__tap_2", "High Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -tapmet1_2 = logic_module( - "sky130_fd_sc_hs__tapmet1_2", "High Speed", ["VGND", "VPB", "VPWR"] -) -tapvgnd2_1 = logic_module( - "sky130_fd_sc_hs__tapvgnd2_1", "High Speed", ["VGND", "VPB", "VPWR"] -) -tapvgnd_1 = logic_module( - "sky130_fd_sc_hs__tapvgnd_1", "High Speed", ["VGND", "VPB", "VPWR"] -) -tapvpwrvgnd_1 = logic_module( - "sky130_fd_sc_hs__tapvpwrvgnd_1", "High Speed", ["VGND", "VPWR"] -) -xnor2_1 = logic_module( - "sky130_fd_sc_hs__xnor2_1", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_2 = logic_module( - "sky130_fd_sc_hs__xnor2_2", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_4 = logic_module( - "sky130_fd_sc_hs__xnor2_4", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor3_1 = logic_module( - "sky130_fd_sc_hs__xnor3_1", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_2 = logic_module( - "sky130_fd_sc_hs__xnor3_2", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_4 = logic_module( - "sky130_fd_sc_hs__xnor3_4", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_1 = logic_module( - "sky130_fd_sc_hs__xor2_1", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_2 = logic_module( - "sky130_fd_sc_hs__xor2_2", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_4 = logic_module( - "sky130_fd_sc_hs__xor2_4", - "High Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_1 = logic_module( - "sky130_fd_sc_hs__xor3_1", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_2 = logic_module( - "sky130_fd_sc_hs__xor3_2", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_4 = logic_module( - "sky130_fd_sc_hs__xor3_4", - "High Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) diff --git a/sky130/hdl21/sky130_gf/digital_cells/low_leakage.py b/sky130/hdl21/sky130_gf/digital_cells/low_leakage.py deleted file mode 100644 index fcdfbbdd8..000000000 --- a/sky130/hdl21/sky130_gf/digital_cells/low_leakage.py +++ /dev/null @@ -1,1661 +0,0 @@ -from ..pdk_data import logic_module - -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -a21bo_1 = logic_module( - "sky130_fd_sc_hdll__a21bo_1", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_2 = logic_module( - "sky130_fd_sc_hdll__a21bo_2", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_4 = logic_module( - "sky130_fd_sc_hdll__a21bo_4", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21boi_1 = logic_module( - "sky130_fd_sc_hdll__a21boi_1", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_2 = logic_module( - "sky130_fd_sc_hdll__a21boi_2", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_4 = logic_module( - "sky130_fd_sc_hdll__a21boi_4", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21o_1 = logic_module( - "sky130_fd_sc_hdll__a21o_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_2 = logic_module( - "sky130_fd_sc_hdll__a21o_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_4 = logic_module( - "sky130_fd_sc_hdll__a21o_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_6 = logic_module( - "sky130_fd_sc_hdll__a21o_6", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_8 = logic_module( - "sky130_fd_sc_hdll__a21o_8", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21oi_1 = logic_module( - "sky130_fd_sc_hdll__a21oi_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_2 = logic_module( - "sky130_fd_sc_hdll__a21oi_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_4 = logic_module( - "sky130_fd_sc_hdll__a21oi_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22o_1 = logic_module( - "sky130_fd_sc_hdll__a22o_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_2 = logic_module( - "sky130_fd_sc_hdll__a22o_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_4 = logic_module( - "sky130_fd_sc_hdll__a22o_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22oi_1 = logic_module( - "sky130_fd_sc_hdll__a22oi_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_2 = logic_module( - "sky130_fd_sc_hdll__a22oi_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_4 = logic_module( - "sky130_fd_sc_hdll__a22oi_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31o_1 = logic_module( - "sky130_fd_sc_hdll__a31o_1", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_2 = logic_module( - "sky130_fd_sc_hdll__a31o_2", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_4 = logic_module( - "sky130_fd_sc_hdll__a31o_4", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31oi_1 = logic_module( - "sky130_fd_sc_hdll__a31oi_1", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_2 = logic_module( - "sky130_fd_sc_hdll__a31oi_2", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_4 = logic_module( - "sky130_fd_sc_hdll__a31oi_4", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32o_1 = logic_module( - "sky130_fd_sc_hdll__a32o_1", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_2 = logic_module( - "sky130_fd_sc_hdll__a32o_2", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_4 = logic_module( - "sky130_fd_sc_hdll__a32o_4", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32oi_1 = logic_module( - "sky130_fd_sc_hdll__a32oi_1", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_2 = logic_module( - "sky130_fd_sc_hdll__a32oi_2", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_4 = logic_module( - "sky130_fd_sc_hdll__a32oi_4", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211o_1 = logic_module( - "sky130_fd_sc_hdll__a211o_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_2 = logic_module( - "sky130_fd_sc_hdll__a211o_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_4 = logic_module( - "sky130_fd_sc_hdll__a211o_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211oi_1 = logic_module( - "sky130_fd_sc_hdll__a211oi_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_2 = logic_module( - "sky130_fd_sc_hdll__a211oi_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_4 = logic_module( - "sky130_fd_sc_hdll__a211oi_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_1 = logic_module( - "sky130_fd_sc_hdll__a221oi_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_2 = logic_module( - "sky130_fd_sc_hdll__a221oi_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_4 = logic_module( - "sky130_fd_sc_hdll__a221oi_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -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"], -) -and2_1 = logic_module( - "sky130_fd_sc_hdll__and2_1", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_2 = logic_module( - "sky130_fd_sc_hdll__and2_2", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_4 = logic_module( - "sky130_fd_sc_hdll__and2_4", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_6 = logic_module( - "sky130_fd_sc_hdll__and2_6", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_8 = logic_module( - "sky130_fd_sc_hdll__and2_8", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_1 = logic_module( - "sky130_fd_sc_hdll__and2b_1", - "High Density Low Leakage", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_2 = logic_module( - "sky130_fd_sc_hdll__and2b_2", - "High Density Low Leakage", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_4 = logic_module( - "sky130_fd_sc_hdll__and2b_4", - "High Density Low Leakage", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_1 = logic_module( - "sky130_fd_sc_hdll__and3_1", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_2 = logic_module( - "sky130_fd_sc_hdll__and3_2", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_4 = logic_module( - "sky130_fd_sc_hdll__and3_4", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_1 = logic_module( - "sky130_fd_sc_hdll__and3b_1", - "High Density Low Leakage", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_2 = logic_module( - "sky130_fd_sc_hdll__and3b_2", - "High Density Low Leakage", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_4 = logic_module( - "sky130_fd_sc_hdll__and3b_4", - "High Density Low Leakage", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_1 = logic_module( - "sky130_fd_sc_hdll__and4_1", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_2 = logic_module( - "sky130_fd_sc_hdll__and4_2", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_4 = logic_module( - "sky130_fd_sc_hdll__and4_4", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_1 = logic_module( - "sky130_fd_sc_hdll__and4b_1", - "High Density Low Leakage", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_2 = logic_module( - "sky130_fd_sc_hdll__and4b_2", - "High Density Low Leakage", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_4 = logic_module( - "sky130_fd_sc_hdll__and4b_4", - "High Density Low Leakage", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -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"], -) -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"], -) -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"], -) -buf_1 = logic_module( - "sky130_fd_sc_hdll__buf_1", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_2 = logic_module( - "sky130_fd_sc_hdll__buf_2", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_4 = logic_module( - "sky130_fd_sc_hdll__buf_4", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_6 = logic_module( - "sky130_fd_sc_hdll__buf_6", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_8 = logic_module( - "sky130_fd_sc_hdll__buf_8", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_12 = logic_module( - "sky130_fd_sc_hdll__buf_12", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_16 = logic_module( - "sky130_fd_sc_hdll__buf_16", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufbuf_8 = logic_module( - "sky130_fd_sc_hdll__bufbuf_8", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufbuf_16 = logic_module( - "sky130_fd_sc_hdll__bufbuf_16", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufinv_8 = logic_module( - "sky130_fd_sc_hdll__bufinv_8", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -bufinv_16 = logic_module( - "sky130_fd_sc_hdll__bufinv_16", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkbuf_1 = logic_module( - "sky130_fd_sc_hdll__clkbuf_1", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_2 = logic_module( - "sky130_fd_sc_hdll__clkbuf_2", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_4 = logic_module( - "sky130_fd_sc_hdll__clkbuf_4", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_6 = logic_module( - "sky130_fd_sc_hdll__clkbuf_6", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_8 = logic_module( - "sky130_fd_sc_hdll__clkbuf_8", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_12 = logic_module( - "sky130_fd_sc_hdll__clkbuf_12", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_16 = logic_module( - "sky130_fd_sc_hdll__clkbuf_16", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkinv_1 = logic_module( - "sky130_fd_sc_hdll__clkinv_1", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_2 = logic_module( - "sky130_fd_sc_hdll__clkinv_2", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_4 = logic_module( - "sky130_fd_sc_hdll__clkinv_4", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_8 = logic_module( - "sky130_fd_sc_hdll__clkinv_8", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_12 = logic_module( - "sky130_fd_sc_hdll__clkinv_12", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_16 = logic_module( - "sky130_fd_sc_hdll__clkinv_16", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinvlp_2 = logic_module( - "sky130_fd_sc_hdll__clkinvlp_2", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinvlp_4 = logic_module( - "sky130_fd_sc_hdll__clkinvlp_4", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkmux2_1 = logic_module( - "sky130_fd_sc_hdll__clkmux2_1", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkmux2_2 = logic_module( - "sky130_fd_sc_hdll__clkmux2_2", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkmux2_4 = logic_module( - "sky130_fd_sc_hdll__clkmux2_4", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -conb_1 = logic_module( - "sky130_fd_sc_hdll__conb_1", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], -) -decap_3 = logic_module( - "sky130_fd_sc_hdll__decap_3", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR"], -) -decap_4 = logic_module( - "sky130_fd_sc_hdll__decap_4", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR"], -) -decap_6 = logic_module( - "sky130_fd_sc_hdll__decap_6", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR"], -) -decap_8 = logic_module( - "sky130_fd_sc_hdll__decap_8", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR"], -) -decap_12 = logic_module( - "sky130_fd_sc_hdll__decap_12", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR"], -) -dfrtp_1 = logic_module( - "sky130_fd_sc_hdll__dfrtp_1", - "High Density Low Leakage", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_2 = logic_module( - "sky130_fd_sc_hdll__dfrtp_2", - "High Density Low Leakage", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_4 = logic_module( - "sky130_fd_sc_hdll__dfrtp_4", - "High Density Low Leakage", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_1 = logic_module( - "sky130_fd_sc_hdll__dfstp_1", - "High Density Low Leakage", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_2 = logic_module( - "sky130_fd_sc_hdll__dfstp_2", - "High Density Low Leakage", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_4 = logic_module( - "sky130_fd_sc_hdll__dfstp_4", - "High Density Low Leakage", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -diode_2 = logic_module( - "sky130_fd_sc_hdll__diode_2", - "High Density Low Leakage", - ["DIODE", "VGND", "VNB", "VPB", "VPWR"], -) -diode_4 = logic_module( - "sky130_fd_sc_hdll__diode_4", - "High Density Low Leakage", - ["DIODE", "VGND", "VNB", "VPB", "VPWR"], -) -diode_6 = logic_module( - "sky130_fd_sc_hdll__diode_6", - "High Density Low Leakage", - ["DIODE", "VGND", "VNB", "VPB", "VPWR"], -) -diode_8 = logic_module( - "sky130_fd_sc_hdll__diode_8", - "High Density Low Leakage", - ["DIODE", "VGND", "VNB", "VPB", "VPWR"], -) -dlrtn_1 = logic_module( - "sky130_fd_sc_hdll__dlrtn_1", - "High Density Low Leakage", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_2 = logic_module( - "sky130_fd_sc_hdll__dlrtn_2", - "High Density Low Leakage", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_4 = logic_module( - "sky130_fd_sc_hdll__dlrtn_4", - "High Density Low Leakage", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_1 = logic_module( - "sky130_fd_sc_hdll__dlrtp_1", - "High Density Low Leakage", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_2 = logic_module( - "sky130_fd_sc_hdll__dlrtp_2", - "High Density Low Leakage", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_4 = logic_module( - "sky130_fd_sc_hdll__dlrtp_4", - "High Density Low Leakage", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_1 = logic_module( - "sky130_fd_sc_hdll__dlxtn_1", - "High Density Low Leakage", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_2 = logic_module( - "sky130_fd_sc_hdll__dlxtn_2", - "High Density Low Leakage", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_4 = logic_module( - "sky130_fd_sc_hdll__dlxtn_4", - "High Density Low Leakage", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlygate4sd1_1 = logic_module( - "sky130_fd_sc_hdll__dlygate4sd1_1", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4sd2_1 = logic_module( - "sky130_fd_sc_hdll__dlygate4sd2_1", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4sd3_1 = logic_module( - "sky130_fd_sc_hdll__dlygate4sd3_1", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -ebufn_1 = logic_module( - "sky130_fd_sc_hdll__ebufn_1", - "High Density Low Leakage", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_2 = logic_module( - "sky130_fd_sc_hdll__ebufn_2", - "High Density Low Leakage", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_4 = logic_module( - "sky130_fd_sc_hdll__ebufn_4", - "High Density Low Leakage", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_8 = logic_module( - "sky130_fd_sc_hdll__ebufn_8", - "High Density Low Leakage", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_1 = logic_module( - "sky130_fd_sc_hdll__einvn_1", - "High Density Low Leakage", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_2 = logic_module( - "sky130_fd_sc_hdll__einvn_2", - "High Density Low Leakage", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_4 = logic_module( - "sky130_fd_sc_hdll__einvn_4", - "High Density Low Leakage", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_8 = logic_module( - "sky130_fd_sc_hdll__einvn_8", - "High Density Low Leakage", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_1 = logic_module( - "sky130_fd_sc_hdll__einvp_1", - "High Density Low Leakage", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_2 = logic_module( - "sky130_fd_sc_hdll__einvp_2", - "High Density Low Leakage", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_4 = logic_module( - "sky130_fd_sc_hdll__einvp_4", - "High Density Low Leakage", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_8 = logic_module( - "sky130_fd_sc_hdll__einvp_8", - "High Density Low Leakage", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -fill_1 = logic_module( - "sky130_fd_sc_hdll__fill_1", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR"], -) -fill_2 = logic_module( - "sky130_fd_sc_hdll__fill_2", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR"], -) -fill_4 = logic_module( - "sky130_fd_sc_hdll__fill_4", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR"], -) -fill_8 = logic_module( - "sky130_fd_sc_hdll__fill_8", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR"], -) -inputiso0n_1 = logic_module( - "sky130_fd_sc_hdll__inputiso0n_1", - "High Density Low Leakage", - ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -inputiso0p_1 = logic_module( - "sky130_fd_sc_hdll__inputiso0p_1", - "High Density Low Leakage", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -inputiso1n_1 = logic_module( - "sky130_fd_sc_hdll__inputiso1n_1", - "High Density Low Leakage", - ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -inputiso1p_1 = logic_module( - "sky130_fd_sc_hdll__inputiso1p_1", - "High Density Low Leakage", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -inv_1 = logic_module( - "sky130_fd_sc_hdll__inv_1", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_2 = logic_module( - "sky130_fd_sc_hdll__inv_2", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_4 = logic_module( - "sky130_fd_sc_hdll__inv_4", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_6 = logic_module( - "sky130_fd_sc_hdll__inv_6", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_8 = logic_module( - "sky130_fd_sc_hdll__inv_8", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_12 = logic_module( - "sky130_fd_sc_hdll__inv_12", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_16 = logic_module( - "sky130_fd_sc_hdll__inv_16", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -isobufsrc_1 = logic_module( - "sky130_fd_sc_hdll__isobufsrc_1", - "High Density Low Leakage", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -isobufsrc_2 = logic_module( - "sky130_fd_sc_hdll__isobufsrc_2", - "High Density Low Leakage", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -isobufsrc_4 = logic_module( - "sky130_fd_sc_hdll__isobufsrc_4", - "High Density Low Leakage", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -isobufsrc_8 = logic_module( - "sky130_fd_sc_hdll__isobufsrc_8", - "High Density Low Leakage", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -isobufsrc_16 = logic_module( - "sky130_fd_sc_hdll__isobufsrc_16", - "High Density Low Leakage", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_1 = logic_module( - "sky130_fd_sc_hdll__mux2_1", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_2 = logic_module( - "sky130_fd_sc_hdll__mux2_2", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_4 = logic_module( - "sky130_fd_sc_hdll__mux2_4", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_8 = logic_module( - "sky130_fd_sc_hdll__mux2_8", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_12 = logic_module( - "sky130_fd_sc_hdll__mux2_12", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_16 = logic_module( - "sky130_fd_sc_hdll__mux2_16", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2i_1 = logic_module( - "sky130_fd_sc_hdll__mux2i_1", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_2 = logic_module( - "sky130_fd_sc_hdll__mux2i_2", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_4 = logic_module( - "sky130_fd_sc_hdll__mux2i_4", - "High Density Low Leakage", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -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"], -) -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"], -) -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"], -) -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]"], -) -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]"], -) -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]"], -) -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]"], -) -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]"], -) -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]"], -) -nand2_1 = logic_module( - "sky130_fd_sc_hdll__nand2_1", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_2 = logic_module( - "sky130_fd_sc_hdll__nand2_2", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_4 = logic_module( - "sky130_fd_sc_hdll__nand2_4", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_6 = logic_module( - "sky130_fd_sc_hdll__nand2_6", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_8 = logic_module( - "sky130_fd_sc_hdll__nand2_8", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_12 = logic_module( - "sky130_fd_sc_hdll__nand2_12", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_16 = logic_module( - "sky130_fd_sc_hdll__nand2_16", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_1 = logic_module( - "sky130_fd_sc_hdll__nand2b_1", - "High Density Low Leakage", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_2 = logic_module( - "sky130_fd_sc_hdll__nand2b_2", - "High Density Low Leakage", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_4 = logic_module( - "sky130_fd_sc_hdll__nand2b_4", - "High Density Low Leakage", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_1 = logic_module( - "sky130_fd_sc_hdll__nand3_1", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_2 = logic_module( - "sky130_fd_sc_hdll__nand3_2", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_4 = logic_module( - "sky130_fd_sc_hdll__nand3_4", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_1 = logic_module( - "sky130_fd_sc_hdll__nand3b_1", - "High Density Low Leakage", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_2 = logic_module( - "sky130_fd_sc_hdll__nand3b_2", - "High Density Low Leakage", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_4 = logic_module( - "sky130_fd_sc_hdll__nand3b_4", - "High Density Low Leakage", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_1 = logic_module( - "sky130_fd_sc_hdll__nand4_1", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_2 = logic_module( - "sky130_fd_sc_hdll__nand4_2", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_4 = logic_module( - "sky130_fd_sc_hdll__nand4_4", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_1 = logic_module( - "sky130_fd_sc_hdll__nand4b_1", - "High Density Low Leakage", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_2 = logic_module( - "sky130_fd_sc_hdll__nand4b_2", - "High Density Low Leakage", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_4 = logic_module( - "sky130_fd_sc_hdll__nand4b_4", - "High Density Low Leakage", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -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"], -) -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"], -) -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"], -) -nor2_1 = logic_module( - "sky130_fd_sc_hdll__nor2_1", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_2 = logic_module( - "sky130_fd_sc_hdll__nor2_2", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_4 = logic_module( - "sky130_fd_sc_hdll__nor2_4", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_8 = logic_module( - "sky130_fd_sc_hdll__nor2_8", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_1 = logic_module( - "sky130_fd_sc_hdll__nor2b_1", - "High Density Low Leakage", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_2 = logic_module( - "sky130_fd_sc_hdll__nor2b_2", - "High Density Low Leakage", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_4 = logic_module( - "sky130_fd_sc_hdll__nor2b_4", - "High Density Low Leakage", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_1 = logic_module( - "sky130_fd_sc_hdll__nor3_1", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_2 = logic_module( - "sky130_fd_sc_hdll__nor3_2", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_4 = logic_module( - "sky130_fd_sc_hdll__nor3_4", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_1 = logic_module( - "sky130_fd_sc_hdll__nor3b_1", - "High Density Low Leakage", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_2 = logic_module( - "sky130_fd_sc_hdll__nor3b_2", - "High Density Low Leakage", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_4 = logic_module( - "sky130_fd_sc_hdll__nor3b_4", - "High Density Low Leakage", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_1 = logic_module( - "sky130_fd_sc_hdll__nor4_1", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_2 = logic_module( - "sky130_fd_sc_hdll__nor4_2", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_4 = logic_module( - "sky130_fd_sc_hdll__nor4_4", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_6 = logic_module( - "sky130_fd_sc_hdll__nor4_6", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_8 = logic_module( - "sky130_fd_sc_hdll__nor4_8", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_1 = logic_module( - "sky130_fd_sc_hdll__nor4b_1", - "High Density Low Leakage", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_2 = logic_module( - "sky130_fd_sc_hdll__nor4b_2", - "High Density Low Leakage", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_4 = logic_module( - "sky130_fd_sc_hdll__nor4b_4", - "High Density Low Leakage", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -o21a_1 = logic_module( - "sky130_fd_sc_hdll__o21a_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_2 = logic_module( - "sky130_fd_sc_hdll__o21a_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_4 = logic_module( - "sky130_fd_sc_hdll__o21a_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ai_1 = logic_module( - "sky130_fd_sc_hdll__o21ai_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_2 = logic_module( - "sky130_fd_sc_hdll__o21ai_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_4 = logic_module( - "sky130_fd_sc_hdll__o21ai_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ba_1 = logic_module( - "sky130_fd_sc_hdll__o21ba_1", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_2 = logic_module( - "sky130_fd_sc_hdll__o21ba_2", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_4 = logic_module( - "sky130_fd_sc_hdll__o21ba_4", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21bai_1 = logic_module( - "sky130_fd_sc_hdll__o21bai_1", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_2 = logic_module( - "sky130_fd_sc_hdll__o21bai_2", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_4 = logic_module( - "sky130_fd_sc_hdll__o21bai_4", - "High Density Low Leakage", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22a_1 = logic_module( - "sky130_fd_sc_hdll__o22a_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_2 = logic_module( - "sky130_fd_sc_hdll__o22a_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_4 = logic_module( - "sky130_fd_sc_hdll__o22a_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22ai_1 = logic_module( - "sky130_fd_sc_hdll__o22ai_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_2 = logic_module( - "sky130_fd_sc_hdll__o22ai_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_4 = logic_module( - "sky130_fd_sc_hdll__o22ai_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_1 = logic_module( - "sky130_fd_sc_hdll__o31ai_1", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_2 = logic_module( - "sky130_fd_sc_hdll__o31ai_2", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_4 = logic_module( - "sky130_fd_sc_hdll__o31ai_4", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_1 = logic_module( - "sky130_fd_sc_hdll__o32ai_1", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_2 = logic_module( - "sky130_fd_sc_hdll__o32ai_2", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_4 = logic_module( - "sky130_fd_sc_hdll__o32ai_4", - "High Density Low Leakage", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211a_1 = logic_module( - "sky130_fd_sc_hdll__o211a_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_2 = logic_module( - "sky130_fd_sc_hdll__o211a_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_4 = logic_module( - "sky130_fd_sc_hdll__o211a_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211ai_1 = logic_module( - "sky130_fd_sc_hdll__o211ai_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_2 = logic_module( - "sky130_fd_sc_hdll__o211ai_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_4 = logic_module( - "sky130_fd_sc_hdll__o211ai_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221a_1 = logic_module( - "sky130_fd_sc_hdll__o221a_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_2 = logic_module( - "sky130_fd_sc_hdll__o221a_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_4 = logic_module( - "sky130_fd_sc_hdll__o221a_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221ai_1 = logic_module( - "sky130_fd_sc_hdll__o221ai_1", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_2 = logic_module( - "sky130_fd_sc_hdll__o221ai_2", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_4 = logic_module( - "sky130_fd_sc_hdll__o221ai_4", - "High Density Low Leakage", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -or2_1 = logic_module( - "sky130_fd_sc_hdll__or2_1", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_2 = logic_module( - "sky130_fd_sc_hdll__or2_2", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_4 = logic_module( - "sky130_fd_sc_hdll__or2_4", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_6 = logic_module( - "sky130_fd_sc_hdll__or2_6", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_8 = logic_module( - "sky130_fd_sc_hdll__or2_8", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_1 = logic_module( - "sky130_fd_sc_hdll__or2b_1", - "High Density Low Leakage", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_2 = logic_module( - "sky130_fd_sc_hdll__or2b_2", - "High Density Low Leakage", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_4 = logic_module( - "sky130_fd_sc_hdll__or2b_4", - "High Density Low Leakage", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_1 = logic_module( - "sky130_fd_sc_hdll__or3_1", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_2 = logic_module( - "sky130_fd_sc_hdll__or3_2", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_4 = logic_module( - "sky130_fd_sc_hdll__or3_4", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_1 = logic_module( - "sky130_fd_sc_hdll__or3b_1", - "High Density Low Leakage", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_2 = logic_module( - "sky130_fd_sc_hdll__or3b_2", - "High Density Low Leakage", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_4 = logic_module( - "sky130_fd_sc_hdll__or3b_4", - "High Density Low Leakage", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_1 = logic_module( - "sky130_fd_sc_hdll__or4_1", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_2 = logic_module( - "sky130_fd_sc_hdll__or4_2", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_4 = logic_module( - "sky130_fd_sc_hdll__or4_4", - "High Density Low Leakage", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_1 = logic_module( - "sky130_fd_sc_hdll__or4b_1", - "High Density Low Leakage", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_2 = logic_module( - "sky130_fd_sc_hdll__or4b_2", - "High Density Low Leakage", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_4 = logic_module( - "sky130_fd_sc_hdll__or4b_4", - "High Density Low Leakage", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -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"], -) -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"], -) -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"], -) -probe_p_8 = logic_module( - "sky130_fd_sc_hdll__probe_p_8", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -probec_p_8 = logic_module( - "sky130_fd_sc_hdll__probec_p_8", - "High Density Low Leakage", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -sdfxtp_1 = logic_module( - "sky130_fd_sc_hdll__sdfxtp_1", - "High Density Low Leakage", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_2 = logic_module( - "sky130_fd_sc_hdll__sdfxtp_2", - "High Density Low Leakage", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_4 = logic_module( - "sky130_fd_sc_hdll__sdfxtp_4", - "High Density Low Leakage", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdlclkp_1 = logic_module( - "sky130_fd_sc_hdll__sdlclkp_1", - "High Density Low Leakage", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_2 = logic_module( - "sky130_fd_sc_hdll__sdlclkp_2", - "High Density Low Leakage", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_4 = logic_module( - "sky130_fd_sc_hdll__sdlclkp_4", - "High Density Low Leakage", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -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"], -) -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"], -) -tap = logic_module("tap", "High Density Low Leakage", ["VGND", "VPWR"]) -tap_1 = logic_module( - "sky130_fd_sc_hdll__tap_1", - "High Density Low Leakage", - ["VGND", "VNB", "VPB", "VPWR"], -) -tapvgnd2_1 = logic_module( - "sky130_fd_sc_hdll__tapvgnd2_1", - "High Density Low Leakage", - ["VGND", "VPB", "VPWR"], -) -tapvgnd_1 = logic_module( - "sky130_fd_sc_hdll__tapvgnd_1", - "High Density Low Leakage", - ["VGND", "VPB", "VPWR"], -) -tapvpwrvgnd_1 = logic_module( - "sky130_fd_sc_hdll__tapvpwrvgnd_1", "High Density Low Leakage", ["VGND", "VPWR"] -) -xnor2_1 = logic_module( - "sky130_fd_sc_hdll__xnor2_1", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_2 = logic_module( - "sky130_fd_sc_hdll__xnor2_2", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_4 = logic_module( - "sky130_fd_sc_hdll__xnor2_4", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor3_1 = logic_module( - "sky130_fd_sc_hdll__xnor3_1", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_2 = logic_module( - "sky130_fd_sc_hdll__xnor3_2", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_4 = logic_module( - "sky130_fd_sc_hdll__xnor3_4", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_1 = logic_module( - "sky130_fd_sc_hdll__xor2_1", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_2 = logic_module( - "sky130_fd_sc_hdll__xor2_2", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_4 = logic_module( - "sky130_fd_sc_hdll__xor2_4", - "High Density Low Leakage", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_1 = logic_module( - "sky130_fd_sc_hdll__xor3_1", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_2 = logic_module( - "sky130_fd_sc_hdll__xor3_2", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_4 = logic_module( - "sky130_fd_sc_hdll__xor3_4", - "High Density Low Leakage", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) diff --git a/sky130/hdl21/sky130_gf/digital_cells/low_power.py b/sky130/hdl21/sky130_gf/digital_cells/low_power.py deleted file mode 100644 index 1c61a11b5..000000000 --- a/sky130/hdl21/sky130_gf/digital_cells/low_power.py +++ /dev/null @@ -1,3636 +0,0 @@ -from ..pdk_data import logic_module - -a2bb2o_0 = logic_module( - "sky130_fd_sc_lp__a2bb2o_0", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_1 = logic_module( - "sky130_fd_sc_lp__a2bb2o_1", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_2 = logic_module( - "sky130_fd_sc_lp__a2bb2o_2", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_4 = logic_module( - "sky130_fd_sc_lp__a2bb2o_4", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_lp = logic_module( - "sky130_fd_sc_lp__a2bb2o_lp", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_m = logic_module( - "sky130_fd_sc_lp__a2bb2o_m", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2oi_0 = logic_module( - "sky130_fd_sc_lp__a2bb2oi_0", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_1 = logic_module( - "sky130_fd_sc_lp__a2bb2oi_1", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_2 = logic_module( - "sky130_fd_sc_lp__a2bb2oi_2", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_4 = logic_module( - "sky130_fd_sc_lp__a2bb2oi_4", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_lp = logic_module( - "sky130_fd_sc_lp__a2bb2oi_lp", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_m = logic_module( - "sky130_fd_sc_lp__a2bb2oi_m", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21bo_0 = logic_module( - "sky130_fd_sc_lp__a21bo_0", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_1 = logic_module( - "sky130_fd_sc_lp__a21bo_1", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_2 = logic_module( - "sky130_fd_sc_lp__a21bo_2", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_4 = logic_module( - "sky130_fd_sc_lp__a21bo_4", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_lp = logic_module( - "sky130_fd_sc_lp__a21bo_lp", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_m = logic_module( - "sky130_fd_sc_lp__a21bo_m", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21boi_0 = logic_module( - "sky130_fd_sc_lp__a21boi_0", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_1 = logic_module( - "sky130_fd_sc_lp__a21boi_1", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_2 = logic_module( - "sky130_fd_sc_lp__a21boi_2", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_4 = logic_module( - "sky130_fd_sc_lp__a21boi_4", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_lp = logic_module( - "sky130_fd_sc_lp__a21boi_lp", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_m = logic_module( - "sky130_fd_sc_lp__a21boi_m", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21o_0 = logic_module( - "sky130_fd_sc_lp__a21o_0", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_1 = logic_module( - "sky130_fd_sc_lp__a21o_1", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_2 = logic_module( - "sky130_fd_sc_lp__a21o_2", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_4 = logic_module( - "sky130_fd_sc_lp__a21o_4", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_lp = logic_module( - "sky130_fd_sc_lp__a21o_lp", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_m = logic_module( - "sky130_fd_sc_lp__a21o_m", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21oi_0 = logic_module( - "sky130_fd_sc_lp__a21oi_0", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_1 = logic_module( - "sky130_fd_sc_lp__a21oi_1", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_2 = logic_module( - "sky130_fd_sc_lp__a21oi_2", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_4 = logic_module( - "sky130_fd_sc_lp__a21oi_4", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_lp = logic_module( - "sky130_fd_sc_lp__a21oi_lp", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_m = logic_module( - "sky130_fd_sc_lp__a21oi_m", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22o_0 = logic_module( - "sky130_fd_sc_lp__a22o_0", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_1 = logic_module( - "sky130_fd_sc_lp__a22o_1", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_2 = logic_module( - "sky130_fd_sc_lp__a22o_2", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_4 = logic_module( - "sky130_fd_sc_lp__a22o_4", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_lp = logic_module( - "sky130_fd_sc_lp__a22o_lp", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_m = logic_module( - "sky130_fd_sc_lp__a22o_m", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22oi_0 = logic_module( - "sky130_fd_sc_lp__a22oi_0", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_1 = logic_module( - "sky130_fd_sc_lp__a22oi_1", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_2 = logic_module( - "sky130_fd_sc_lp__a22oi_2", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_4 = logic_module( - "sky130_fd_sc_lp__a22oi_4", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_lp = logic_module( - "sky130_fd_sc_lp__a22oi_lp", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_m = logic_module( - "sky130_fd_sc_lp__a22oi_m", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31o_0 = logic_module( - "sky130_fd_sc_lp__a31o_0", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_1 = logic_module( - "sky130_fd_sc_lp__a31o_1", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_2 = logic_module( - "sky130_fd_sc_lp__a31o_2", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_4 = logic_module( - "sky130_fd_sc_lp__a31o_4", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_lp = logic_module( - "sky130_fd_sc_lp__a31o_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_m = logic_module( - "sky130_fd_sc_lp__a31o_m", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31oi_0 = logic_module( - "sky130_fd_sc_lp__a31oi_0", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_1 = logic_module( - "sky130_fd_sc_lp__a31oi_1", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_2 = logic_module( - "sky130_fd_sc_lp__a31oi_2", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_4 = logic_module( - "sky130_fd_sc_lp__a31oi_4", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_lp = logic_module( - "sky130_fd_sc_lp__a31oi_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_m = logic_module( - "sky130_fd_sc_lp__a31oi_m", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32o_0 = logic_module( - "sky130_fd_sc_lp__a32o_0", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_1 = logic_module( - "sky130_fd_sc_lp__a32o_1", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_2 = logic_module( - "sky130_fd_sc_lp__a32o_2", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_4 = logic_module( - "sky130_fd_sc_lp__a32o_4", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_lp = logic_module( - "sky130_fd_sc_lp__a32o_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_m = logic_module( - "sky130_fd_sc_lp__a32o_m", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32oi_0 = logic_module( - "sky130_fd_sc_lp__a32oi_0", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_1 = logic_module( - "sky130_fd_sc_lp__a32oi_1", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_2 = logic_module( - "sky130_fd_sc_lp__a32oi_2", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_4 = logic_module( - "sky130_fd_sc_lp__a32oi_4", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_lp = logic_module( - "sky130_fd_sc_lp__a32oi_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_m = logic_module( - "sky130_fd_sc_lp__a32oi_m", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41o_0 = logic_module( - "sky130_fd_sc_lp__a41o_0", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_1 = logic_module( - "sky130_fd_sc_lp__a41o_1", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_2 = logic_module( - "sky130_fd_sc_lp__a41o_2", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_4 = logic_module( - "sky130_fd_sc_lp__a41o_4", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_lp = logic_module( - "sky130_fd_sc_lp__a41o_lp", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_m = logic_module( - "sky130_fd_sc_lp__a41o_m", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41oi_0 = logic_module( - "sky130_fd_sc_lp__a41oi_0", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_1 = logic_module( - "sky130_fd_sc_lp__a41oi_1", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_2 = logic_module( - "sky130_fd_sc_lp__a41oi_2", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_4 = logic_module( - "sky130_fd_sc_lp__a41oi_4", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_lp = logic_module( - "sky130_fd_sc_lp__a41oi_lp", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_m = logic_module( - "sky130_fd_sc_lp__a41oi_m", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211o_0 = logic_module( - "sky130_fd_sc_lp__a211o_0", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_1 = logic_module( - "sky130_fd_sc_lp__a211o_1", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_2 = logic_module( - "sky130_fd_sc_lp__a211o_2", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_4 = logic_module( - "sky130_fd_sc_lp__a211o_4", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_lp = logic_module( - "sky130_fd_sc_lp__a211o_lp", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_m = logic_module( - "sky130_fd_sc_lp__a211o_m", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211oi_0 = logic_module( - "sky130_fd_sc_lp__a211oi_0", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_1 = logic_module( - "sky130_fd_sc_lp__a211oi_1", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_2 = logic_module( - "sky130_fd_sc_lp__a211oi_2", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_4 = logic_module( - "sky130_fd_sc_lp__a211oi_4", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_lp = logic_module( - "sky130_fd_sc_lp__a211oi_lp", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_m = logic_module( - "sky130_fd_sc_lp__a211oi_m", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221o_0 = logic_module( - "sky130_fd_sc_lp__a221o_0", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_1 = logic_module( - "sky130_fd_sc_lp__a221o_1", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_2 = logic_module( - "sky130_fd_sc_lp__a221o_2", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_4 = logic_module( - "sky130_fd_sc_lp__a221o_4", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_lp = logic_module( - "sky130_fd_sc_lp__a221o_lp", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_m = logic_module( - "sky130_fd_sc_lp__a221o_m", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221oi_0 = logic_module( - "sky130_fd_sc_lp__a221oi_0", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_1 = logic_module( - "sky130_fd_sc_lp__a221oi_1", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_2 = logic_module( - "sky130_fd_sc_lp__a221oi_2", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_4 = logic_module( - "sky130_fd_sc_lp__a221oi_4", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_lp = logic_module( - "sky130_fd_sc_lp__a221oi_lp", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_m = logic_module( - "sky130_fd_sc_lp__a221oi_m", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311o_0 = logic_module( - "sky130_fd_sc_lp__a311o_0", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_1 = logic_module( - "sky130_fd_sc_lp__a311o_1", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_2 = logic_module( - "sky130_fd_sc_lp__a311o_2", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_4 = logic_module( - "sky130_fd_sc_lp__a311o_4", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_lp = logic_module( - "sky130_fd_sc_lp__a311o_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_m = logic_module( - "sky130_fd_sc_lp__a311o_m", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311oi_0 = logic_module( - "sky130_fd_sc_lp__a311oi_0", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_1 = logic_module( - "sky130_fd_sc_lp__a311oi_1", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_2 = logic_module( - "sky130_fd_sc_lp__a311oi_2", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_4 = logic_module( - "sky130_fd_sc_lp__a311oi_4", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_lp = logic_module( - "sky130_fd_sc_lp__a311oi_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_m = logic_module( - "sky130_fd_sc_lp__a311oi_m", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111o_0 = logic_module( - "sky130_fd_sc_lp__a2111o_0", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_1 = logic_module( - "sky130_fd_sc_lp__a2111o_1", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_2 = logic_module( - "sky130_fd_sc_lp__a2111o_2", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_4 = logic_module( - "sky130_fd_sc_lp__a2111o_4", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_lp = logic_module( - "sky130_fd_sc_lp__a2111o_lp", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_m = logic_module( - "sky130_fd_sc_lp__a2111o_m", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111oi_0 = logic_module( - "sky130_fd_sc_lp__a2111oi_0", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_1 = logic_module( - "sky130_fd_sc_lp__a2111oi_1", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_2 = logic_module( - "sky130_fd_sc_lp__a2111oi_2", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_4 = logic_module( - "sky130_fd_sc_lp__a2111oi_4", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_lp = logic_module( - "sky130_fd_sc_lp__a2111oi_lp", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_m = logic_module( - "sky130_fd_sc_lp__a2111oi_m", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -and2_0 = logic_module( - "sky130_fd_sc_lp__and2_0", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_1 = logic_module( - "sky130_fd_sc_lp__and2_1", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_2 = logic_module( - "sky130_fd_sc_lp__and2_2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_4 = logic_module( - "sky130_fd_sc_lp__and2_4", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_lp2 = logic_module( - "sky130_fd_sc_lp__and2_lp2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_lp = logic_module( - "sky130_fd_sc_lp__and2_lp", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_m = logic_module( - "sky130_fd_sc_lp__and2_m", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_1 = logic_module( - "sky130_fd_sc_lp__and2b_1", - "Low Power", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_2 = logic_module( - "sky130_fd_sc_lp__and2b_2", - "Low Power", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_4 = logic_module( - "sky130_fd_sc_lp__and2b_4", - "Low Power", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_lp = logic_module( - "sky130_fd_sc_lp__and2b_lp", - "Low Power", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_m = logic_module( - "sky130_fd_sc_lp__and2b_m", - "Low Power", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_0 = logic_module( - "sky130_fd_sc_lp__and3_0", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_1 = logic_module( - "sky130_fd_sc_lp__and3_1", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_2 = logic_module( - "sky130_fd_sc_lp__and3_2", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_4 = logic_module( - "sky130_fd_sc_lp__and3_4", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_lp = logic_module( - "sky130_fd_sc_lp__and3_lp", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_m = logic_module( - "sky130_fd_sc_lp__and3_m", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_1 = logic_module( - "sky130_fd_sc_lp__and3b_1", - "Low Power", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_2 = logic_module( - "sky130_fd_sc_lp__and3b_2", - "Low Power", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_4 = logic_module( - "sky130_fd_sc_lp__and3b_4", - "Low Power", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_lp = logic_module( - "sky130_fd_sc_lp__and3b_lp", - "Low Power", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_m = logic_module( - "sky130_fd_sc_lp__and3b_m", - "Low Power", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_0 = logic_module( - "sky130_fd_sc_lp__and4_0", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_1 = logic_module( - "sky130_fd_sc_lp__and4_1", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_2 = logic_module( - "sky130_fd_sc_lp__and4_2", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_4 = logic_module( - "sky130_fd_sc_lp__and4_4", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_lp2 = logic_module( - "sky130_fd_sc_lp__and4_lp2", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_lp = logic_module( - "sky130_fd_sc_lp__and4_lp", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_m = logic_module( - "sky130_fd_sc_lp__and4_m", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_1 = logic_module( - "sky130_fd_sc_lp__and4b_1", - "Low Power", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_2 = logic_module( - "sky130_fd_sc_lp__and4b_2", - "Low Power", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_4 = logic_module( - "sky130_fd_sc_lp__and4b_4", - "Low Power", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_lp = logic_module( - "sky130_fd_sc_lp__and4b_lp", - "Low Power", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_m = logic_module( - "sky130_fd_sc_lp__and4b_m", - "Low Power", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_1 = logic_module( - "sky130_fd_sc_lp__and4bb_1", - "Low Power", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_2 = logic_module( - "sky130_fd_sc_lp__and4bb_2", - "Low Power", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_4 = logic_module( - "sky130_fd_sc_lp__and4bb_4", - "Low Power", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_lp = logic_module( - "sky130_fd_sc_lp__and4bb_lp", - "Low Power", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_m = logic_module( - "sky130_fd_sc_lp__and4bb_m", - "Low Power", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_0 = logic_module( - "sky130_fd_sc_lp__buf_0", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_1 = logic_module( - "sky130_fd_sc_lp__buf_1", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_2 = logic_module( - "sky130_fd_sc_lp__buf_2", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_4 = logic_module( - "sky130_fd_sc_lp__buf_4", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_8 = logic_module( - "sky130_fd_sc_lp__buf_8", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_16 = logic_module( - "sky130_fd_sc_lp__buf_16", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_lp = logic_module( - "sky130_fd_sc_lp__buf_lp", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_m = logic_module( - "sky130_fd_sc_lp__buf_m", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -bufbuf_8 = logic_module( - "sky130_fd_sc_lp__bufbuf_8", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufbuf_16 = logic_module( - "sky130_fd_sc_lp__bufbuf_16", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufinv_8 = logic_module( - "sky130_fd_sc_lp__bufinv_8", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -bufinv_16 = logic_module( - "sky130_fd_sc_lp__bufinv_16", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -bufkapwr_1 = logic_module( - "sky130_fd_sc_lp__bufkapwr_1", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufkapwr_2 = logic_module( - "sky130_fd_sc_lp__bufkapwr_2", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufkapwr_4 = logic_module( - "sky130_fd_sc_lp__bufkapwr_4", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufkapwr_8 = logic_module( - "sky130_fd_sc_lp__bufkapwr_8", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buflp_0 = logic_module( - "sky130_fd_sc_lp__buflp_0", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buflp_1 = logic_module( - "sky130_fd_sc_lp__buflp_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buflp_2 = logic_module( - "sky130_fd_sc_lp__buflp_2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buflp_4 = logic_module( - "sky130_fd_sc_lp__buflp_4", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buflp_8 = logic_module( - "sky130_fd_sc_lp__buflp_8", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buflp_m = logic_module( - "sky130_fd_sc_lp__buflp_m", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -busdriver2_20 = logic_module( - "sky130_fd_sc_lp__busdriver2_20", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -busdriver_20 = logic_module( - "sky130_fd_sc_lp__busdriver_20", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -busdrivernovlp2_20 = logic_module( - "sky130_fd_sc_lp__busdrivernovlp2_20", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -busdrivernovlp_20 = logic_module( - "sky130_fd_sc_lp__busdrivernovlp_20", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -busdrivernovlpsleep_20 = logic_module( - "sky130_fd_sc_lp__busdrivernovlpsleep_20", - "Low Power", - ["A", "SLEEP", "TE_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -bushold0_1 = logic_module( - "sky130_fd_sc_lp__bushold0_1", - "Low Power", - ["RESET", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bushold_1 = logic_module( - "sky130_fd_sc_lp__bushold_1", - "Low Power", - ["RESET", "VGND", "VNB", "VPB", "VPWR", "X"], -) -busreceiver_0 = logic_module( - "sky130_fd_sc_lp__busreceiver_0", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -busreceiver_1 = logic_module( - "sky130_fd_sc_lp__busreceiver_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -busreceiver_m = logic_module( - "sky130_fd_sc_lp__busreceiver_m", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_0 = logic_module( - "sky130_fd_sc_lp__clkbuf_0", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_1 = logic_module( - "sky130_fd_sc_lp__clkbuf_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_2 = logic_module( - "sky130_fd_sc_lp__clkbuf_2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_4 = logic_module( - "sky130_fd_sc_lp__clkbuf_4", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_8 = logic_module( - "sky130_fd_sc_lp__clkbuf_8", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_16 = logic_module( - "sky130_fd_sc_lp__clkbuf_16", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_lp = logic_module( - "sky130_fd_sc_lp__clkbuf_lp", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuflp_2 = logic_module( - "sky130_fd_sc_lp__clkbuflp_2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuflp_4 = logic_module( - "sky130_fd_sc_lp__clkbuflp_4", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuflp_8 = logic_module( - "sky130_fd_sc_lp__clkbuflp_8", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuflp_16 = logic_module( - "sky130_fd_sc_lp__clkbuflp_16", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s15_1 = logic_module( - "sky130_fd_sc_lp__clkdlybuf4s15_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s15_2 = logic_module( - "sky130_fd_sc_lp__clkdlybuf4s15_2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s18_1 = logic_module( - "sky130_fd_sc_lp__clkdlybuf4s18_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s18_2 = logic_module( - "sky130_fd_sc_lp__clkdlybuf4s18_2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s25_1 = logic_module( - "sky130_fd_sc_lp__clkdlybuf4s25_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s25_2 = logic_module( - "sky130_fd_sc_lp__clkdlybuf4s25_2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s50_1 = logic_module( - "sky130_fd_sc_lp__clkdlybuf4s50_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlybuf4s50_2 = logic_module( - "sky130_fd_sc_lp__clkdlybuf4s50_2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkinv_0 = logic_module( - "sky130_fd_sc_lp__clkinv_0", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_1 = logic_module( - "sky130_fd_sc_lp__clkinv_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_2 = logic_module( - "sky130_fd_sc_lp__clkinv_2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_4 = logic_module( - "sky130_fd_sc_lp__clkinv_4", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_8 = logic_module( - "sky130_fd_sc_lp__clkinv_8", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_16 = logic_module( - "sky130_fd_sc_lp__clkinv_16", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_lp2 = logic_module( - "sky130_fd_sc_lp__clkinv_lp2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_lp = logic_module( - "sky130_fd_sc_lp__clkinv_lp", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinvlp_2 = logic_module( - "sky130_fd_sc_lp__clkinvlp_2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinvlp_4 = logic_module( - "sky130_fd_sc_lp__clkinvlp_4", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinvlp_8 = logic_module( - "sky130_fd_sc_lp__clkinvlp_8", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinvlp_16 = logic_module( - "sky130_fd_sc_lp__clkinvlp_16", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -conb_0 = logic_module( - "sky130_fd_sc_lp__conb_0", - "Low Power", - ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], -) -conb_1 = logic_module( - "sky130_fd_sc_lp__conb_1", - "Low Power", - ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], -) -decap_3 = logic_module( - "sky130_fd_sc_lp__decap_3", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_4 = logic_module( - "sky130_fd_sc_lp__decap_4", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_6 = logic_module( - "sky130_fd_sc_lp__decap_6", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_8 = logic_module( - "sky130_fd_sc_lp__decap_8", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_12 = logic_module( - "sky130_fd_sc_lp__decap_12", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -decapkapwr_3 = logic_module( - "sky130_fd_sc_lp__decapkapwr_3", - "Low Power", - ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -decapkapwr_4 = logic_module( - "sky130_fd_sc_lp__decapkapwr_4", - "Low Power", - ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -decapkapwr_6 = logic_module( - "sky130_fd_sc_lp__decapkapwr_6", - "Low Power", - ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -decapkapwr_8 = logic_module( - "sky130_fd_sc_lp__decapkapwr_8", - "Low Power", - ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -decapkapwr_12 = logic_module( - "sky130_fd_sc_lp__decapkapwr_12", - "Low Power", - ["KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -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"], -) -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"], -) -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"], -) -dfrbp_1 = logic_module( - "sky130_fd_sc_lp__dfrbp_1", - "Low Power", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrbp_2 = logic_module( - "sky130_fd_sc_lp__dfrbp_2", - "Low Power", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrbp_lp = logic_module( - "sky130_fd_sc_lp__dfrbp_lp", - "Low Power", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrtn_1 = logic_module( - "sky130_fd_sc_lp__dfrtn_1", - "Low Power", - ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_1 = logic_module( - "sky130_fd_sc_lp__dfrtp_1", - "Low Power", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_2 = logic_module( - "sky130_fd_sc_lp__dfrtp_2", - "Low Power", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_4 = logic_module( - "sky130_fd_sc_lp__dfrtp_4", - "Low Power", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfsbp_1 = logic_module( - "sky130_fd_sc_lp__dfsbp_1", - "Low Power", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfsbp_2 = logic_module( - "sky130_fd_sc_lp__dfsbp_2", - "Low Power", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfsbp_lp = logic_module( - "sky130_fd_sc_lp__dfsbp_lp", - "Low Power", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfstp_1 = logic_module( - "sky130_fd_sc_lp__dfstp_1", - "Low Power", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_2 = logic_module( - "sky130_fd_sc_lp__dfstp_2", - "Low Power", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_4 = logic_module( - "sky130_fd_sc_lp__dfstp_4", - "Low Power", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_lp = logic_module( - "sky130_fd_sc_lp__dfstp_lp", - "Low Power", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxbp_1 = logic_module( - "sky130_fd_sc_lp__dfxbp_1", - "Low Power", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxbp_2 = logic_module( - "sky130_fd_sc_lp__dfxbp_2", - "Low Power", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxbp_lp = logic_module( - "sky130_fd_sc_lp__dfxbp_lp", - "Low Power", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxtp_1 = logic_module( - "sky130_fd_sc_lp__dfxtp_1", - "Low Power", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_2 = logic_module( - "sky130_fd_sc_lp__dfxtp_2", - "Low Power", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_4 = logic_module( - "sky130_fd_sc_lp__dfxtp_4", - "Low Power", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_lp = logic_module( - "sky130_fd_sc_lp__dfxtp_lp", - "Low Power", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -diode_0 = logic_module( - "sky130_fd_sc_lp__diode_0", "Low Power", ["DIODE", "VGND", "VNB", "VPB", "VPWR"] -) -diode_1 = logic_module( - "sky130_fd_sc_lp__diode_1", "Low Power", ["DIODE", "VGND", "VNB", "VPB", "VPWR"] -) -dlclkp_1 = logic_module( - "sky130_fd_sc_lp__dlclkp_1", - "Low Power", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_2 = logic_module( - "sky130_fd_sc_lp__dlclkp_2", - "Low Power", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_4 = logic_module( - "sky130_fd_sc_lp__dlclkp_4", - "Low Power", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_lp = logic_module( - "sky130_fd_sc_lp__dlclkp_lp", - "Low Power", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlrbn_1 = logic_module( - "sky130_fd_sc_lp__dlrbn_1", - "Low Power", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbn_2 = logic_module( - "sky130_fd_sc_lp__dlrbn_2", - "Low Power", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbn_lp = logic_module( - "sky130_fd_sc_lp__dlrbn_lp", - "Low Power", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_1 = logic_module( - "sky130_fd_sc_lp__dlrbp_1", - "Low Power", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_2 = logic_module( - "sky130_fd_sc_lp__dlrbp_2", - "Low Power", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_lp = logic_module( - "sky130_fd_sc_lp__dlrbp_lp", - "Low Power", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrtn_1 = logic_module( - "sky130_fd_sc_lp__dlrtn_1", - "Low Power", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_2 = logic_module( - "sky130_fd_sc_lp__dlrtn_2", - "Low Power", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_4 = logic_module( - "sky130_fd_sc_lp__dlrtn_4", - "Low Power", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_lp = logic_module( - "sky130_fd_sc_lp__dlrtn_lp", - "Low Power", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_1 = logic_module( - "sky130_fd_sc_lp__dlrtp_1", - "Low Power", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_2 = logic_module( - "sky130_fd_sc_lp__dlrtp_2", - "Low Power", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_4 = logic_module( - "sky130_fd_sc_lp__dlrtp_4", - "Low Power", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_lp2 = logic_module( - "sky130_fd_sc_lp__dlrtp_lp2", - "Low Power", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_lp = logic_module( - "sky130_fd_sc_lp__dlrtp_lp", - "Low Power", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxbn_1 = logic_module( - "sky130_fd_sc_lp__dlxbn_1", - "Low Power", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbn_2 = logic_module( - "sky130_fd_sc_lp__dlxbn_2", - "Low Power", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbp_1 = logic_module( - "sky130_fd_sc_lp__dlxbp_1", - "Low Power", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbp_lp2 = logic_module( - "sky130_fd_sc_lp__dlxbp_lp2", - "Low Power", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbp_lp = logic_module( - "sky130_fd_sc_lp__dlxbp_lp", - "Low Power", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxtn_1 = logic_module( - "sky130_fd_sc_lp__dlxtn_1", - "Low Power", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_2 = logic_module( - "sky130_fd_sc_lp__dlxtn_2", - "Low Power", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_4 = logic_module( - "sky130_fd_sc_lp__dlxtn_4", - "Low Power", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtp_1 = logic_module( - "sky130_fd_sc_lp__dlxtp_1", - "Low Power", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtp_lp2 = logic_module( - "sky130_fd_sc_lp__dlxtp_lp2", - "Low Power", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtp_lp = logic_module( - "sky130_fd_sc_lp__dlxtp_lp", - "Low Power", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlybuf4s15kapwr_1 = logic_module( - "sky130_fd_sc_lp__dlybuf4s15kapwr_1", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlybuf4s15kapwr_2 = logic_module( - "sky130_fd_sc_lp__dlybuf4s15kapwr_2", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlybuf4s18kapwr_1 = logic_module( - "sky130_fd_sc_lp__dlybuf4s18kapwr_1", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlybuf4s18kapwr_2 = logic_module( - "sky130_fd_sc_lp__dlybuf4s18kapwr_2", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlybuf4s25kapwr_1 = logic_module( - "sky130_fd_sc_lp__dlybuf4s25kapwr_1", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlybuf4s25kapwr_2 = logic_module( - "sky130_fd_sc_lp__dlybuf4s25kapwr_2", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlybuf4s50kapwr_1 = logic_module( - "sky130_fd_sc_lp__dlybuf4s50kapwr_1", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlybuf4s50kapwr_2 = logic_module( - "sky130_fd_sc_lp__dlybuf4s50kapwr_2", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4s15_1 = logic_module( - "sky130_fd_sc_lp__dlygate4s15_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4s18_1 = logic_module( - "sky130_fd_sc_lp__dlygate4s18_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4s50_1 = logic_module( - "sky130_fd_sc_lp__dlygate4s50_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s2s_1 = logic_module( - "sky130_fd_sc_lp__dlymetal6s2s_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s4s_1 = logic_module( - "sky130_fd_sc_lp__dlymetal6s4s_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s6s_1 = logic_module( - "sky130_fd_sc_lp__dlymetal6s6s_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -ebufn_1 = logic_module( - "sky130_fd_sc_lp__ebufn_1", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_2 = logic_module( - "sky130_fd_sc_lp__ebufn_2", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_4 = logic_module( - "sky130_fd_sc_lp__ebufn_4", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_8 = logic_module( - "sky130_fd_sc_lp__ebufn_8", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_lp2 = logic_module( - "sky130_fd_sc_lp__ebufn_lp2", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_lp = logic_module( - "sky130_fd_sc_lp__ebufn_lp", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -edfxbp_1 = logic_module( - "sky130_fd_sc_lp__edfxbp_1", - "Low Power", - ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -einvn_0 = logic_module( - "sky130_fd_sc_lp__einvn_0", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_1 = logic_module( - "sky130_fd_sc_lp__einvn_1", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_2 = logic_module( - "sky130_fd_sc_lp__einvn_2", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_4 = logic_module( - "sky130_fd_sc_lp__einvn_4", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_8 = logic_module( - "sky130_fd_sc_lp__einvn_8", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_lp = logic_module( - "sky130_fd_sc_lp__einvn_lp", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_m = logic_module( - "sky130_fd_sc_lp__einvn_m", - "Low Power", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_0 = logic_module( - "sky130_fd_sc_lp__einvp_0", - "Low Power", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_1 = logic_module( - "sky130_fd_sc_lp__einvp_1", - "Low Power", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_2 = logic_module( - "sky130_fd_sc_lp__einvp_2", - "Low Power", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_4 = logic_module( - "sky130_fd_sc_lp__einvp_4", - "Low Power", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_8 = logic_module( - "sky130_fd_sc_lp__einvp_8", - "Low Power", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_lp = logic_module( - "sky130_fd_sc_lp__einvp_lp", - "Low Power", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_m = logic_module( - "sky130_fd_sc_lp__einvp_m", - "Low Power", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -fa_0 = logic_module( - "sky130_fd_sc_lp__fa_0", - "Low Power", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_1 = logic_module( - "sky130_fd_sc_lp__fa_1", - "Low Power", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_2 = logic_module( - "sky130_fd_sc_lp__fa_2", - "Low Power", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_4 = logic_module( - "sky130_fd_sc_lp__fa_4", - "Low Power", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_lp = logic_module( - "sky130_fd_sc_lp__fa_lp", - "Low Power", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_m = logic_module( - "sky130_fd_sc_lp__fa_m", - "Low Power", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_1 = logic_module( - "sky130_fd_sc_lp__fah_1", - "Low Power", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fahcin_1 = logic_module( - "sky130_fd_sc_lp__fahcin_1", - "Low Power", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fahcon_1 = logic_module( - "sky130_fd_sc_lp__fahcon_1", - "Low Power", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"], -) -fill_1 = logic_module( - "sky130_fd_sc_lp__fill_1", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_2 = logic_module( - "sky130_fd_sc_lp__fill_2", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_4 = logic_module( - "sky130_fd_sc_lp__fill_4", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_8 = logic_module( - "sky130_fd_sc_lp__fill_8", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -ha_0 = logic_module( - "sky130_fd_sc_lp__ha_0", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_1 = logic_module( - "sky130_fd_sc_lp__ha_1", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_2 = logic_module( - "sky130_fd_sc_lp__ha_2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_4 = logic_module( - "sky130_fd_sc_lp__ha_4", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_lp = logic_module( - "sky130_fd_sc_lp__ha_lp", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_m = logic_module( - "sky130_fd_sc_lp__ha_m", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -inputiso0n_lp = logic_module( - "sky130_fd_sc_lp__inputiso0n_lp", - "Low Power", - ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -inputiso0p_lp = logic_module( - "sky130_fd_sc_lp__inputiso0p_lp", - "Low Power", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -inputiso1n_lp = logic_module( - "sky130_fd_sc_lp__inputiso1n_lp", - "Low Power", - ["A", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -inputiso1p_lp = logic_module( - "sky130_fd_sc_lp__inputiso1p_lp", - "Low Power", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -inputisolatch_lp = logic_module( - "sky130_fd_sc_lp__inputisolatch_lp", - "Low Power", - ["D", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -inv_0 = logic_module( - "sky130_fd_sc_lp__inv_0", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_1 = logic_module( - "sky130_fd_sc_lp__inv_1", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_2 = logic_module( - "sky130_fd_sc_lp__inv_2", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_4 = logic_module( - "sky130_fd_sc_lp__inv_4", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_8 = logic_module( - "sky130_fd_sc_lp__inv_8", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_16 = logic_module( - "sky130_fd_sc_lp__inv_16", "Low Power", ["A", "VGND", "VNB", "VPB", "Y"] -) -inv_lp = logic_module( - "sky130_fd_sc_lp__inv_lp", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_m = logic_module( - "sky130_fd_sc_lp__inv_m", "Low Power", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -invkapwr_1 = logic_module( - "sky130_fd_sc_lp__invkapwr_1", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -invkapwr_2 = logic_module( - "sky130_fd_sc_lp__invkapwr_2", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -invkapwr_4 = logic_module( - "sky130_fd_sc_lp__invkapwr_4", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -invkapwr_8 = logic_module( - "sky130_fd_sc_lp__invkapwr_8", - "Low Power", - ["A", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -invlp_0 = logic_module( - "sky130_fd_sc_lp__invlp_0", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -invlp_1 = logic_module( - "sky130_fd_sc_lp__invlp_1", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -invlp_2 = logic_module( - "sky130_fd_sc_lp__invlp_2", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -invlp_4 = logic_module( - "sky130_fd_sc_lp__invlp_4", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -invlp_8 = logic_module( - "sky130_fd_sc_lp__invlp_8", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -invlp_m = logic_module( - "sky130_fd_sc_lp__invlp_m", - "Low Power", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -iso0n_lp2 = logic_module( - "sky130_fd_sc_lp__iso0n_lp2", - "Low Power", - ["A", "SLEEP_B", "KAGND", "VGND", "VNB", "VPB", "VPWR", "X"], -) -iso0n_lp = logic_module( - "sky130_fd_sc_lp__iso0n_lp", - "Low Power", - ["A", "KAGND", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -iso0p_lp2 = logic_module( - "sky130_fd_sc_lp__iso0p_lp2", - "Low Power", - ["A", "SLEEP", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -iso0p_lp = logic_module( - "sky130_fd_sc_lp__iso0p_lp", - "Low Power", - ["A", "KAPWR", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -iso1n_lp2 = logic_module( - "sky130_fd_sc_lp__iso1n_lp2", - "Low Power", - ["A", "SLEEP_B", "KAGND", "VGND", "VNB", "VPB", "VPWR", "X"], -) -iso1n_lp = logic_module( - "sky130_fd_sc_lp__iso1n_lp", - "Low Power", - ["A", "KAGND", "SLEEP_B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -iso1p_lp2 = logic_module( - "sky130_fd_sc_lp__iso1p_lp2", - "Low Power", - ["A", "SLEEP", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "X"], -) -iso1p_lp = logic_module( - "sky130_fd_sc_lp__iso1p_lp", - "Low Power", - ["A", "KAPWR", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -isobufsrc_1 = logic_module( - "sky130_fd_sc_lp__isobufsrc_1", - "Low Power", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -isobufsrc_2 = logic_module( - "sky130_fd_sc_lp__isobufsrc_2", - "Low Power", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -isobufsrc_4 = logic_module( - "sky130_fd_sc_lp__isobufsrc_4", - "Low Power", - ["A", "SLEEP", "VGND", "VNB", "VPB", "VPWR", "X"], -) -isolatch_lp = logic_module( - "sky130_fd_sc_lp__isolatch_lp", - "Low Power", - ["D", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -lsbuf_lp = logic_module( - "sky130_fd_sc_lp__lsbuf_lp", - "Low Power", - ["A", "DESTPWR", "DESTVPB", "VGND", "VPB", "VPWR", "X"], -) -lsbufiso0p_lp = logic_module( - "sky130_fd_sc_lp__lsbufiso0p_lp", - "Low Power", - ["A", "DESTPWR", "DESTVPB", "SLEEP", "VGND", "VPB", "VPWR", "X"], -) -lsbufiso1p_lp = logic_module( - "sky130_fd_sc_lp__lsbufiso1p_lp", - "Low Power", - ["A", "DESTPWR", "DESTVPB", "SLEEP", "VGND", "VPB", "VPWR", "X"], -) -maj3_0 = logic_module( - "sky130_fd_sc_lp__maj3_0", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_1 = logic_module( - "sky130_fd_sc_lp__maj3_1", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_2 = logic_module( - "sky130_fd_sc_lp__maj3_2", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_4 = logic_module( - "sky130_fd_sc_lp__maj3_4", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_lp = logic_module( - "sky130_fd_sc_lp__maj3_lp", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_m = logic_module( - "sky130_fd_sc_lp__maj3_m", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_0 = logic_module( - "sky130_fd_sc_lp__mux2_0", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_1 = logic_module( - "sky130_fd_sc_lp__mux2_1", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_2 = logic_module( - "sky130_fd_sc_lp__mux2_2", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_4 = logic_module( - "sky130_fd_sc_lp__mux2_4", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_8 = logic_module( - "sky130_fd_sc_lp__mux2_8", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_lp2 = logic_module( - "sky130_fd_sc_lp__mux2_lp2", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_lp = logic_module( - "sky130_fd_sc_lp__mux2_lp", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_m = logic_module( - "sky130_fd_sc_lp__mux2_m", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2i_0 = logic_module( - "sky130_fd_sc_lp__mux2i_0", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_1 = logic_module( - "sky130_fd_sc_lp__mux2i_1", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_2 = logic_module( - "sky130_fd_sc_lp__mux2i_2", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_4 = logic_module( - "sky130_fd_sc_lp__mux2i_4", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_lp2 = logic_module( - "sky130_fd_sc_lp__mux2i_lp2", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_lp = logic_module( - "sky130_fd_sc_lp__mux2i_lp", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_m = logic_module( - "sky130_fd_sc_lp__mux2i_m", - "Low Power", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux4_0 = logic_module( - "sky130_fd_sc_lp__mux4_0", - "Low Power", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_1 = logic_module( - "sky130_fd_sc_lp__mux4_1", - "Low Power", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_2 = logic_module( - "sky130_fd_sc_lp__mux4_2", - "Low Power", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_4 = logic_module( - "sky130_fd_sc_lp__mux4_4", - "Low Power", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_lp = logic_module( - "sky130_fd_sc_lp__mux4_lp", - "Low Power", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_m = logic_module( - "sky130_fd_sc_lp__mux4_m", - "Low Power", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -nand2_0 = logic_module( - "sky130_fd_sc_lp__nand2_0", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_1 = logic_module( - "sky130_fd_sc_lp__nand2_1", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_2 = logic_module( - "sky130_fd_sc_lp__nand2_2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_4 = logic_module( - "sky130_fd_sc_lp__nand2_4", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_8 = logic_module( - "sky130_fd_sc_lp__nand2_8", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_lp2 = logic_module( - "sky130_fd_sc_lp__nand2_lp2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_lp = logic_module( - "sky130_fd_sc_lp__nand2_lp", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_m = logic_module( - "sky130_fd_sc_lp__nand2_m", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_1 = logic_module( - "sky130_fd_sc_lp__nand2b_1", - "Low Power", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_2 = logic_module( - "sky130_fd_sc_lp__nand2b_2", - "Low Power", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_4 = logic_module( - "sky130_fd_sc_lp__nand2b_4", - "Low Power", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_lp = logic_module( - "sky130_fd_sc_lp__nand2b_lp", - "Low Power", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_m = logic_module( - "sky130_fd_sc_lp__nand2b_m", - "Low Power", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_0 = logic_module( - "sky130_fd_sc_lp__nand3_0", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_1 = logic_module( - "sky130_fd_sc_lp__nand3_1", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_2 = logic_module( - "sky130_fd_sc_lp__nand3_2", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_4 = logic_module( - "sky130_fd_sc_lp__nand3_4", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_lp = logic_module( - "sky130_fd_sc_lp__nand3_lp", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_m = logic_module( - "sky130_fd_sc_lp__nand3_m", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_1 = logic_module( - "sky130_fd_sc_lp__nand3b_1", - "Low Power", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_2 = logic_module( - "sky130_fd_sc_lp__nand3b_2", - "Low Power", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_4 = logic_module( - "sky130_fd_sc_lp__nand3b_4", - "Low Power", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_lp = logic_module( - "sky130_fd_sc_lp__nand3b_lp", - "Low Power", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_m = logic_module( - "sky130_fd_sc_lp__nand3b_m", - "Low Power", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_0 = logic_module( - "sky130_fd_sc_lp__nand4_0", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_1 = logic_module( - "sky130_fd_sc_lp__nand4_1", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_2 = logic_module( - "sky130_fd_sc_lp__nand4_2", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_4 = logic_module( - "sky130_fd_sc_lp__nand4_4", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_lp = logic_module( - "sky130_fd_sc_lp__nand4_lp", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_m = logic_module( - "sky130_fd_sc_lp__nand4_m", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_1 = logic_module( - "sky130_fd_sc_lp__nand4b_1", - "Low Power", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_2 = logic_module( - "sky130_fd_sc_lp__nand4b_2", - "Low Power", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_4 = logic_module( - "sky130_fd_sc_lp__nand4b_4", - "Low Power", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_lp = logic_module( - "sky130_fd_sc_lp__nand4b_lp", - "Low Power", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_m = logic_module( - "sky130_fd_sc_lp__nand4b_m", - "Low Power", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_1 = logic_module( - "sky130_fd_sc_lp__nand4bb_1", - "Low Power", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_2 = logic_module( - "sky130_fd_sc_lp__nand4bb_2", - "Low Power", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_4 = logic_module( - "sky130_fd_sc_lp__nand4bb_4", - "Low Power", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_lp = logic_module( - "sky130_fd_sc_lp__nand4bb_lp", - "Low Power", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_m = logic_module( - "sky130_fd_sc_lp__nand4bb_m", - "Low Power", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_0 = logic_module( - "sky130_fd_sc_lp__nor2_0", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_1 = logic_module( - "sky130_fd_sc_lp__nor2_1", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_2 = logic_module( - "sky130_fd_sc_lp__nor2_2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_4 = logic_module( - "sky130_fd_sc_lp__nor2_4", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_8 = logic_module( - "sky130_fd_sc_lp__nor2_8", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_lp2 = logic_module( - "sky130_fd_sc_lp__nor2_lp2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_lp = logic_module( - "sky130_fd_sc_lp__nor2_lp", "Low Power", ["A", "B", "VNB", "VPB", "Y"] -) -nor2_m = logic_module( - "sky130_fd_sc_lp__nor2_m", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_1 = logic_module( - "sky130_fd_sc_lp__nor2b_1", - "Low Power", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_2 = logic_module( - "sky130_fd_sc_lp__nor2b_2", - "Low Power", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_4 = logic_module( - "sky130_fd_sc_lp__nor2b_4", - "Low Power", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_lp = logic_module( - "sky130_fd_sc_lp__nor2b_lp", - "Low Power", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_m = logic_module( - "sky130_fd_sc_lp__nor2b_m", - "Low Power", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_0 = logic_module( - "sky130_fd_sc_lp__nor3_0", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_1 = logic_module( - "sky130_fd_sc_lp__nor3_1", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_2 = logic_module( - "sky130_fd_sc_lp__nor3_2", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_4 = logic_module( - "sky130_fd_sc_lp__nor3_4", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_lp = logic_module( - "sky130_fd_sc_lp__nor3_lp", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_m = logic_module( - "sky130_fd_sc_lp__nor3_m", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_1 = logic_module( - "sky130_fd_sc_lp__nor3b_1", - "Low Power", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_2 = logic_module( - "sky130_fd_sc_lp__nor3b_2", - "Low Power", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_4 = logic_module( - "sky130_fd_sc_lp__nor3b_4", - "Low Power", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_lp = logic_module( - "sky130_fd_sc_lp__nor3b_lp", - "Low Power", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_m = logic_module( - "sky130_fd_sc_lp__nor3b_m", - "Low Power", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_0 = logic_module( - "sky130_fd_sc_lp__nor4_0", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_1 = logic_module( - "sky130_fd_sc_lp__nor4_1", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_2 = logic_module( - "sky130_fd_sc_lp__nor4_2", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_4 = logic_module( - "sky130_fd_sc_lp__nor4_4", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_lp = logic_module( - "sky130_fd_sc_lp__nor4_lp", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_m = logic_module( - "sky130_fd_sc_lp__nor4_m", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_1 = logic_module( - "sky130_fd_sc_lp__nor4b_1", - "Low Power", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_2 = logic_module( - "sky130_fd_sc_lp__nor4b_2", - "Low Power", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_4 = logic_module( - "sky130_fd_sc_lp__nor4b_4", - "Low Power", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_lp = logic_module( - "sky130_fd_sc_lp__nor4b_lp", - "Low Power", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_m = logic_module( - "sky130_fd_sc_lp__nor4b_m", - "Low Power", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_1 = logic_module( - "sky130_fd_sc_lp__nor4bb_1", - "Low Power", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_2 = logic_module( - "sky130_fd_sc_lp__nor4bb_2", - "Low Power", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_4 = logic_module( - "sky130_fd_sc_lp__nor4bb_4", - "Low Power", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_lp = logic_module( - "sky130_fd_sc_lp__nor4bb_lp", - "Low Power", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_m = logic_module( - "sky130_fd_sc_lp__nor4bb_m", - "Low Power", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2a_0 = logic_module( - "sky130_fd_sc_lp__o2bb2a_0", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_1 = logic_module( - "sky130_fd_sc_lp__o2bb2a_1", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_2 = logic_module( - "sky130_fd_sc_lp__o2bb2a_2", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_4 = logic_module( - "sky130_fd_sc_lp__o2bb2a_4", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_lp = logic_module( - "sky130_fd_sc_lp__o2bb2a_lp", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_m = logic_module( - "sky130_fd_sc_lp__o2bb2a_m", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2ai_0 = logic_module( - "sky130_fd_sc_lp__o2bb2ai_0", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_1 = logic_module( - "sky130_fd_sc_lp__o2bb2ai_1", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_2 = logic_module( - "sky130_fd_sc_lp__o2bb2ai_2", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_4 = logic_module( - "sky130_fd_sc_lp__o2bb2ai_4", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_lp = logic_module( - "sky130_fd_sc_lp__o2bb2ai_lp", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_m = logic_module( - "sky130_fd_sc_lp__o2bb2ai_m", - "Low Power", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21a_0 = logic_module( - "sky130_fd_sc_lp__o21a_0", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_1 = logic_module( - "sky130_fd_sc_lp__o21a_1", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_2 = logic_module( - "sky130_fd_sc_lp__o21a_2", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_4 = logic_module( - "sky130_fd_sc_lp__o21a_4", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_lp = logic_module( - "sky130_fd_sc_lp__o21a_lp", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_m = logic_module( - "sky130_fd_sc_lp__o21a_m", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ai_0 = logic_module( - "sky130_fd_sc_lp__o21ai_0", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_1 = logic_module( - "sky130_fd_sc_lp__o21ai_1", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_2 = logic_module( - "sky130_fd_sc_lp__o21ai_2", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_4 = logic_module( - "sky130_fd_sc_lp__o21ai_4", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_lp = logic_module( - "sky130_fd_sc_lp__o21ai_lp", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_m = logic_module( - "sky130_fd_sc_lp__o21ai_m", - "Low Power", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ba_0 = logic_module( - "sky130_fd_sc_lp__o21ba_0", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_1 = logic_module( - "sky130_fd_sc_lp__o21ba_1", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_2 = logic_module( - "sky130_fd_sc_lp__o21ba_2", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_4 = logic_module( - "sky130_fd_sc_lp__o21ba_4", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_lp = logic_module( - "sky130_fd_sc_lp__o21ba_lp", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_m = logic_module( - "sky130_fd_sc_lp__o21ba_m", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21bai_0 = logic_module( - "sky130_fd_sc_lp__o21bai_0", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_1 = logic_module( - "sky130_fd_sc_lp__o21bai_1", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_2 = logic_module( - "sky130_fd_sc_lp__o21bai_2", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_4 = logic_module( - "sky130_fd_sc_lp__o21bai_4", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_lp = logic_module( - "sky130_fd_sc_lp__o21bai_lp", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_m = logic_module( - "sky130_fd_sc_lp__o21bai_m", - "Low Power", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22a_0 = logic_module( - "sky130_fd_sc_lp__o22a_0", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_1 = logic_module( - "sky130_fd_sc_lp__o22a_1", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_2 = logic_module( - "sky130_fd_sc_lp__o22a_2", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_4 = logic_module( - "sky130_fd_sc_lp__o22a_4", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_lp = logic_module( - "sky130_fd_sc_lp__o22a_lp", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_m = logic_module( - "sky130_fd_sc_lp__o22a_m", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22ai_0 = logic_module( - "sky130_fd_sc_lp__o22ai_0", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_1 = logic_module( - "sky130_fd_sc_lp__o22ai_1", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_2 = logic_module( - "sky130_fd_sc_lp__o22ai_2", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_4 = logic_module( - "sky130_fd_sc_lp__o22ai_4", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_lp = logic_module( - "sky130_fd_sc_lp__o22ai_lp", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_m = logic_module( - "sky130_fd_sc_lp__o22ai_m", - "Low Power", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31a_0 = logic_module( - "sky130_fd_sc_lp__o31a_0", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_1 = logic_module( - "sky130_fd_sc_lp__o31a_1", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_2 = logic_module( - "sky130_fd_sc_lp__o31a_2", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_4 = logic_module( - "sky130_fd_sc_lp__o31a_4", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_lp = logic_module( - "sky130_fd_sc_lp__o31a_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_m = logic_module( - "sky130_fd_sc_lp__o31a_m", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31ai_0 = logic_module( - "sky130_fd_sc_lp__o31ai_0", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_1 = logic_module( - "sky130_fd_sc_lp__o31ai_1", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_2 = logic_module( - "sky130_fd_sc_lp__o31ai_2", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_4 = logic_module( - "sky130_fd_sc_lp__o31ai_4", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_lp = logic_module( - "sky130_fd_sc_lp__o31ai_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_m = logic_module( - "sky130_fd_sc_lp__o31ai_m", - "Low Power", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32a_0 = logic_module( - "sky130_fd_sc_lp__o32a_0", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_1 = logic_module( - "sky130_fd_sc_lp__o32a_1", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_2 = logic_module( - "sky130_fd_sc_lp__o32a_2", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_4 = logic_module( - "sky130_fd_sc_lp__o32a_4", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_lp = logic_module( - "sky130_fd_sc_lp__o32a_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_m = logic_module( - "sky130_fd_sc_lp__o32a_m", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32ai_0 = logic_module( - "sky130_fd_sc_lp__o32ai_0", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_1 = logic_module( - "sky130_fd_sc_lp__o32ai_1", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_2 = logic_module( - "sky130_fd_sc_lp__o32ai_2", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_4 = logic_module( - "sky130_fd_sc_lp__o32ai_4", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_lp = logic_module( - "sky130_fd_sc_lp__o32ai_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_m = logic_module( - "sky130_fd_sc_lp__o32ai_m", - "Low Power", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41a_0 = logic_module( - "sky130_fd_sc_lp__o41a_0", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_1 = logic_module( - "sky130_fd_sc_lp__o41a_1", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_2 = logic_module( - "sky130_fd_sc_lp__o41a_2", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_4 = logic_module( - "sky130_fd_sc_lp__o41a_4", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_lp = logic_module( - "sky130_fd_sc_lp__o41a_lp", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_m = logic_module( - "sky130_fd_sc_lp__o41a_m", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41ai_0 = logic_module( - "sky130_fd_sc_lp__o41ai_0", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_1 = logic_module( - "sky130_fd_sc_lp__o41ai_1", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_2 = logic_module( - "sky130_fd_sc_lp__o41ai_2", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_4 = logic_module( - "sky130_fd_sc_lp__o41ai_4", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_lp = logic_module( - "sky130_fd_sc_lp__o41ai_lp", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_m = logic_module( - "sky130_fd_sc_lp__o41ai_m", - "Low Power", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211a_0 = logic_module( - "sky130_fd_sc_lp__o211a_0", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_1 = logic_module( - "sky130_fd_sc_lp__o211a_1", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_2 = logic_module( - "sky130_fd_sc_lp__o211a_2", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_4 = logic_module( - "sky130_fd_sc_lp__o211a_4", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_lp = logic_module( - "sky130_fd_sc_lp__o211a_lp", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_m = logic_module( - "sky130_fd_sc_lp__o211a_m", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211ai_0 = logic_module( - "sky130_fd_sc_lp__o211ai_0", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_1 = logic_module( - "sky130_fd_sc_lp__o211ai_1", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_2 = logic_module( - "sky130_fd_sc_lp__o211ai_2", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_4 = logic_module( - "sky130_fd_sc_lp__o211ai_4", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_lp = logic_module( - "sky130_fd_sc_lp__o211ai_lp", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_m = logic_module( - "sky130_fd_sc_lp__o211ai_m", - "Low Power", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221a_0 = logic_module( - "sky130_fd_sc_lp__o221a_0", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_1 = logic_module( - "sky130_fd_sc_lp__o221a_1", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_2 = logic_module( - "sky130_fd_sc_lp__o221a_2", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_4 = logic_module( - "sky130_fd_sc_lp__o221a_4", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_lp = logic_module( - "sky130_fd_sc_lp__o221a_lp", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_m = logic_module( - "sky130_fd_sc_lp__o221a_m", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221ai_0 = logic_module( - "sky130_fd_sc_lp__o221ai_0", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_1 = logic_module( - "sky130_fd_sc_lp__o221ai_1", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_2 = logic_module( - "sky130_fd_sc_lp__o221ai_2", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_4 = logic_module( - "sky130_fd_sc_lp__o221ai_4", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_lp = logic_module( - "sky130_fd_sc_lp__o221ai_lp", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_m = logic_module( - "sky130_fd_sc_lp__o221ai_m", - "Low Power", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311a_0 = logic_module( - "sky130_fd_sc_lp__o311a_0", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_1 = logic_module( - "sky130_fd_sc_lp__o311a_1", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_2 = logic_module( - "sky130_fd_sc_lp__o311a_2", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_4 = logic_module( - "sky130_fd_sc_lp__o311a_4", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_lp = logic_module( - "sky130_fd_sc_lp__o311a_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_m = logic_module( - "sky130_fd_sc_lp__o311a_m", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311ai_0 = logic_module( - "sky130_fd_sc_lp__o311ai_0", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_1 = logic_module( - "sky130_fd_sc_lp__o311ai_1", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_2 = logic_module( - "sky130_fd_sc_lp__o311ai_2", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_4 = logic_module( - "sky130_fd_sc_lp__o311ai_4", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_lp = logic_module( - "sky130_fd_sc_lp__o311ai_lp", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_m = logic_module( - "sky130_fd_sc_lp__o311ai_m", - "Low Power", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111a_0 = logic_module( - "sky130_fd_sc_lp__o2111a_0", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_1 = logic_module( - "sky130_fd_sc_lp__o2111a_1", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_2 = logic_module( - "sky130_fd_sc_lp__o2111a_2", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_4 = logic_module( - "sky130_fd_sc_lp__o2111a_4", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_lp = logic_module( - "sky130_fd_sc_lp__o2111a_lp", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_m = logic_module( - "sky130_fd_sc_lp__o2111a_m", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111ai_0 = logic_module( - "sky130_fd_sc_lp__o2111ai_0", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_1 = logic_module( - "sky130_fd_sc_lp__o2111ai_1", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_2 = logic_module( - "sky130_fd_sc_lp__o2111ai_2", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_4 = logic_module( - "sky130_fd_sc_lp__o2111ai_4", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_lp = logic_module( - "sky130_fd_sc_lp__o2111ai_lp", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_m = logic_module( - "sky130_fd_sc_lp__o2111ai_m", - "Low Power", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -or2_0 = logic_module( - "sky130_fd_sc_lp__or2_0", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_1 = logic_module( - "sky130_fd_sc_lp__or2_1", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_2 = logic_module( - "sky130_fd_sc_lp__or2_2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_4 = logic_module( - "sky130_fd_sc_lp__or2_4", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_lp2 = logic_module( - "sky130_fd_sc_lp__or2_lp2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_lp = logic_module( - "sky130_fd_sc_lp__or2_lp", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_m = logic_module( - "sky130_fd_sc_lp__or2_m", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_1 = logic_module( - "sky130_fd_sc_lp__or2b_1", - "Low Power", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_2 = logic_module( - "sky130_fd_sc_lp__or2b_2", - "Low Power", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_4 = logic_module( - "sky130_fd_sc_lp__or2b_4", - "Low Power", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_lp = logic_module( - "sky130_fd_sc_lp__or2b_lp", - "Low Power", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_m = logic_module( - "sky130_fd_sc_lp__or2b_m", - "Low Power", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_0 = logic_module( - "sky130_fd_sc_lp__or3_0", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_1 = logic_module( - "sky130_fd_sc_lp__or3_1", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_2 = logic_module( - "sky130_fd_sc_lp__or3_2", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_4 = logic_module( - "sky130_fd_sc_lp__or3_4", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_lp = logic_module( - "sky130_fd_sc_lp__or3_lp", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_m = logic_module( - "sky130_fd_sc_lp__or3_m", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_1 = logic_module( - "sky130_fd_sc_lp__or3b_1", - "Low Power", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_2 = logic_module( - "sky130_fd_sc_lp__or3b_2", - "Low Power", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_4 = logic_module( - "sky130_fd_sc_lp__or3b_4", - "Low Power", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_lp = logic_module( - "sky130_fd_sc_lp__or3b_lp", - "Low Power", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_m = logic_module( - "sky130_fd_sc_lp__or3b_m", - "Low Power", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_0 = logic_module( - "sky130_fd_sc_lp__or4_0", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_1 = logic_module( - "sky130_fd_sc_lp__or4_1", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_2 = logic_module( - "sky130_fd_sc_lp__or4_2", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_4 = logic_module( - "sky130_fd_sc_lp__or4_4", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_lp = logic_module( - "sky130_fd_sc_lp__or4_lp", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_m = logic_module( - "sky130_fd_sc_lp__or4_m", - "Low Power", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_1 = logic_module( - "sky130_fd_sc_lp__or4b_1", - "Low Power", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_2 = logic_module( - "sky130_fd_sc_lp__or4b_2", - "Low Power", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_4 = logic_module( - "sky130_fd_sc_lp__or4b_4", - "Low Power", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_lp = logic_module( - "sky130_fd_sc_lp__or4b_lp", - "Low Power", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_m = logic_module( - "sky130_fd_sc_lp__or4b_m", - "Low Power", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_1 = logic_module( - "sky130_fd_sc_lp__or4bb_1", - "Low Power", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_2 = logic_module( - "sky130_fd_sc_lp__or4bb_2", - "Low Power", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_4 = logic_module( - "sky130_fd_sc_lp__or4bb_4", - "Low Power", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_lp = logic_module( - "sky130_fd_sc_lp__or4bb_lp", - "Low Power", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_m = logic_module( - "sky130_fd_sc_lp__or4bb_m", - "Low Power", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -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"], -) -sdfrtn_1 = logic_module( - "sky130_fd_sc_lp__sdfrtn_1", - "Low Power", - ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_1 = logic_module( - "sky130_fd_sc_lp__sdfrtp_1", - "Low Power", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_2 = logic_module( - "sky130_fd_sc_lp__sdfrtp_2", - "Low Power", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_4 = logic_module( - "sky130_fd_sc_lp__sdfrtp_4", - "Low Power", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_lp2 = logic_module( - "sky130_fd_sc_lp__sdfrtp_lp2", - "Low Power", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_ov2 = logic_module( - "sky130_fd_sc_lp__sdfrtp_ov2", - "Low Power", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -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"], -) -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"], -) -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"], -) -sdfstp_1 = logic_module( - "sky130_fd_sc_lp__sdfstp_1", - "Low Power", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_2 = logic_module( - "sky130_fd_sc_lp__sdfstp_2", - "Low Power", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_4 = logic_module( - "sky130_fd_sc_lp__sdfstp_4", - "Low Power", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_lp = logic_module( - "sky130_fd_sc_lp__sdfstp_lp", - "Low Power", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxbp_1 = logic_module( - "sky130_fd_sc_lp__sdfxbp_1", - "Low Power", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxbp_2 = logic_module( - "sky130_fd_sc_lp__sdfxbp_2", - "Low Power", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxbp_lp = logic_module( - "sky130_fd_sc_lp__sdfxbp_lp", - "Low Power", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxtp_1 = logic_module( - "sky130_fd_sc_lp__sdfxtp_1", - "Low Power", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_2 = logic_module( - "sky130_fd_sc_lp__sdfxtp_2", - "Low Power", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_4 = logic_module( - "sky130_fd_sc_lp__sdfxtp_4", - "Low Power", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_lp = logic_module( - "sky130_fd_sc_lp__sdfxtp_lp", - "Low Power", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdlclkp_1 = logic_module( - "sky130_fd_sc_lp__sdlclkp_1", - "Low Power", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_2 = logic_module( - "sky130_fd_sc_lp__sdlclkp_2", - "Low Power", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_4 = logic_module( - "sky130_fd_sc_lp__sdlclkp_4", - "Low Power", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_lp = logic_module( - "sky130_fd_sc_lp__sdlclkp_lp", - "Low Power", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sleep_pargate_plv_7 = logic_module( - "sky130_fd_sc_lp__sleep_pargate_plv_7", - "Low Power", - ["VIRTPWR", "VPWR", "SLEEP", "VPB"], -) -sleep_pargate_plv_14 = logic_module( - "sky130_fd_sc_lp__sleep_pargate_plv_14", - "Low Power", - ["VIRTPWR", "VPWR", "SLEEP", "VPB"], -) -sleep_pargate_plv_21 = logic_module( - "sky130_fd_sc_lp__sleep_pargate_plv_21", - "Low Power", - ["VIRTPWR", "VPWR", "SLEEP", "VPB"], -) -sleep_pargate_plv_28 = logic_module( - "sky130_fd_sc_lp__sleep_pargate_plv_28", - "Low Power", - ["VIRTPWR", "VPWR", "SLEEP", "VPB"], -) -sleep_sergate_plv_14 = logic_module( - "sky130_fd_sc_lp__sleep_sergate_plv_14", - "Low Power", - ["VIRTPWR", "VPWR", "SLEEP", "VPB"], -) -sleep_sergate_plv_21 = logic_module( - "sky130_fd_sc_lp__sleep_sergate_plv_21", - "Low Power", - ["VIRTPWR", "VPWR", "SLEEP", "VPB"], -) -sleep_sergate_plv_28 = logic_module( - "sky130_fd_sc_lp__sleep_sergate_plv_28", - "Low Power", - ["VIRTPWR", "VPWR", "SLEEP", "VPB"], -) -srdlrtp_1 = logic_module( - "sky130_fd_sc_lp__srdlrtp_1", - "Low Power", - ["D", "GATE", "RESET_B", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -srdlstp_1 = logic_module( - "sky130_fd_sc_lp__srdlstp_1", - "Low Power", - ["D", "GATE", "SET_B", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -srdlxtp_1 = logic_module( - "sky130_fd_sc_lp__srdlxtp_1", - "Low Power", - ["D", "GATE", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sregrbp_1 = logic_module( - "sky130_fd_sc_lp__sregrbp_1", - "Low Power", - ["ASYNC", "CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sregsbp_1 = logic_module( - "sky130_fd_sc_lp__sregsbp_1", - "Low Power", - ["ASYNC", "CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -srsdfrtn_1 = logic_module( - "sky130_fd_sc_lp__srsdfrtn_1", - "Low Power", - ["CLK_N", "D", "RESET_B", "SCD", "SCE", "SLEEP_B", "KAPWR", "VGND", "VNB"], -) -srsdfrtp_1 = logic_module( - "sky130_fd_sc_lp__srsdfrtp_1", - "Low Power", - ["CLK", "D", "RESET_B", "SCD", "SCE", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB"], -) -srsdfstp_1 = logic_module( - "sky130_fd_sc_lp__srsdfstp_1", - "Low Power", - ["CLK", "D", "SCD", "SCE", "SET_B", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB"], -) -srsdfxtp_1 = logic_module( - "sky130_fd_sc_lp__srsdfxtp_1", - "Low Power", - ["CLK", "D", "SCD", "SCE", "SLEEP_B", "KAPWR", "VGND", "VNB", "VPB", "VPWR"], -) -tap_1 = logic_module( - "sky130_fd_sc_lp__tap_1", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -tap_2 = logic_module( - "sky130_fd_sc_lp__tap_2", "Low Power", ["VGND", "VNB", "VPB", "VPWR"] -) -tapvgnd2_1 = logic_module( - "sky130_fd_sc_lp__tapvgnd2_1", "Low Power", ["VGND", "VPB", "VPWR"] -) -tapvgnd_1 = logic_module( - "sky130_fd_sc_lp__tapvgnd_1", "Low Power", ["VGND", "VPB", "VPWR"] -) -tapvpwrvgnd_1 = logic_module( - "sky130_fd_sc_lp__tapvpwrvgnd_1", "Low Power", ["VGND", "VPWR"] -) -xnor2_0 = logic_module( - "sky130_fd_sc_lp__xnor2_0", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_1 = logic_module( - "sky130_fd_sc_lp__xnor2_1", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_2 = logic_module( - "sky130_fd_sc_lp__xnor2_2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_4 = logic_module( - "sky130_fd_sc_lp__xnor2_4", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_lp = logic_module( - "sky130_fd_sc_lp__xnor2_lp", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_m = logic_module( - "sky130_fd_sc_lp__xnor2_m", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor3_1 = logic_module( - "sky130_fd_sc_lp__xnor3_1", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_lp = logic_module( - "sky130_fd_sc_lp__xnor3_lp", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_0 = logic_module( - "sky130_fd_sc_lp__xor2_0", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_1 = logic_module( - "sky130_fd_sc_lp__xor2_1", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_2 = logic_module( - "sky130_fd_sc_lp__xor2_2", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_4 = logic_module( - "sky130_fd_sc_lp__xor2_4", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_lp = logic_module( - "sky130_fd_sc_lp__xor2_lp", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_m = logic_module( - "sky130_fd_sc_lp__xor2_m", - "Low Power", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_1 = logic_module( - "sky130_fd_sc_lp__xor3_1", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_lp = logic_module( - "sky130_fd_sc_lp__xor3_lp", - "Low Power", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) diff --git a/sky130/hdl21/sky130_gf/digital_cells/low_speed.py b/sky130/hdl21/sky130_gf/digital_cells/low_speed.py deleted file mode 100644 index 8157a5873..000000000 --- a/sky130/hdl21/sky130_gf/digital_cells/low_speed.py +++ /dev/null @@ -1,1939 +0,0 @@ -from ..pdk_data import logic_module - -a2bb2o_1 = logic_module( - "sky130_fd_sc_ls__a2bb2o_1", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_2 = logic_module( - "sky130_fd_sc_ls__a2bb2o_2", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_4 = logic_module( - "sky130_fd_sc_ls__a2bb2o_4", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2oi_1 = logic_module( - "sky130_fd_sc_ls__a2bb2oi_1", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_2 = logic_module( - "sky130_fd_sc_ls__a2bb2oi_2", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_4 = logic_module( - "sky130_fd_sc_ls__a2bb2oi_4", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21bo_1 = logic_module( - "sky130_fd_sc_ls__a21bo_1", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_2 = logic_module( - "sky130_fd_sc_ls__a21bo_2", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_4 = logic_module( - "sky130_fd_sc_ls__a21bo_4", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21boi_1 = logic_module( - "sky130_fd_sc_ls__a21boi_1", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_2 = logic_module( - "sky130_fd_sc_ls__a21boi_2", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_4 = logic_module( - "sky130_fd_sc_ls__a21boi_4", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21o_1 = logic_module( - "sky130_fd_sc_ls__a21o_1", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_2 = logic_module( - "sky130_fd_sc_ls__a21o_2", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_4 = logic_module( - "sky130_fd_sc_ls__a21o_4", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21oi_1 = logic_module( - "sky130_fd_sc_ls__a21oi_1", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_2 = logic_module( - "sky130_fd_sc_ls__a21oi_2", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_4 = logic_module( - "sky130_fd_sc_ls__a21oi_4", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22o_1 = logic_module( - "sky130_fd_sc_ls__a22o_1", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_2 = logic_module( - "sky130_fd_sc_ls__a22o_2", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_4 = logic_module( - "sky130_fd_sc_ls__a22o_4", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22oi_1 = logic_module( - "sky130_fd_sc_ls__a22oi_1", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_2 = logic_module( - "sky130_fd_sc_ls__a22oi_2", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_4 = logic_module( - "sky130_fd_sc_ls__a22oi_4", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31o_1 = logic_module( - "sky130_fd_sc_ls__a31o_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_2 = logic_module( - "sky130_fd_sc_ls__a31o_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_4 = logic_module( - "sky130_fd_sc_ls__a31o_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31oi_1 = logic_module( - "sky130_fd_sc_ls__a31oi_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_2 = logic_module( - "sky130_fd_sc_ls__a31oi_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_4 = logic_module( - "sky130_fd_sc_ls__a31oi_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32o_1 = logic_module( - "sky130_fd_sc_ls__a32o_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_2 = logic_module( - "sky130_fd_sc_ls__a32o_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_4 = logic_module( - "sky130_fd_sc_ls__a32o_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32oi_1 = logic_module( - "sky130_fd_sc_ls__a32oi_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_2 = logic_module( - "sky130_fd_sc_ls__a32oi_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_4 = logic_module( - "sky130_fd_sc_ls__a32oi_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41o_1 = logic_module( - "sky130_fd_sc_ls__a41o_1", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_2 = logic_module( - "sky130_fd_sc_ls__a41o_2", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_4 = logic_module( - "sky130_fd_sc_ls__a41o_4", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41oi_1 = logic_module( - "sky130_fd_sc_ls__a41oi_1", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_2 = logic_module( - "sky130_fd_sc_ls__a41oi_2", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_4 = logic_module( - "sky130_fd_sc_ls__a41oi_4", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211o_1 = logic_module( - "sky130_fd_sc_ls__a211o_1", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_2 = logic_module( - "sky130_fd_sc_ls__a211o_2", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_4 = logic_module( - "sky130_fd_sc_ls__a211o_4", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211oi_1 = logic_module( - "sky130_fd_sc_ls__a211oi_1", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_2 = logic_module( - "sky130_fd_sc_ls__a211oi_2", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_4 = logic_module( - "sky130_fd_sc_ls__a211oi_4", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221o_1 = logic_module( - "sky130_fd_sc_ls__a221o_1", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_2 = logic_module( - "sky130_fd_sc_ls__a221o_2", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_4 = logic_module( - "sky130_fd_sc_ls__a221o_4", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221oi_1 = logic_module( - "sky130_fd_sc_ls__a221oi_1", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_2 = logic_module( - "sky130_fd_sc_ls__a221oi_2", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_4 = logic_module( - "sky130_fd_sc_ls__a221oi_4", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a222o_1 = logic_module( - "sky130_fd_sc_ls__a222o_1", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a222o_2 = logic_module( - "sky130_fd_sc_ls__a222o_2", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a222oi_1 = logic_module( - "sky130_fd_sc_ls__a222oi_1", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a222oi_2 = logic_module( - "sky130_fd_sc_ls__a222oi_2", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311o_1 = logic_module( - "sky130_fd_sc_ls__a311o_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_2 = logic_module( - "sky130_fd_sc_ls__a311o_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_4 = logic_module( - "sky130_fd_sc_ls__a311o_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311oi_1 = logic_module( - "sky130_fd_sc_ls__a311oi_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_2 = logic_module( - "sky130_fd_sc_ls__a311oi_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_4 = logic_module( - "sky130_fd_sc_ls__a311oi_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111o_1 = logic_module( - "sky130_fd_sc_ls__a2111o_1", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_2 = logic_module( - "sky130_fd_sc_ls__a2111o_2", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_4 = logic_module( - "sky130_fd_sc_ls__a2111o_4", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111oi_1 = logic_module( - "sky130_fd_sc_ls__a2111oi_1", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_2 = logic_module( - "sky130_fd_sc_ls__a2111oi_2", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_4 = logic_module( - "sky130_fd_sc_ls__a2111oi_4", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -and2_1 = logic_module( - "sky130_fd_sc_ls__and2_1", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_2 = logic_module( - "sky130_fd_sc_ls__and2_2", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_4 = logic_module( - "sky130_fd_sc_ls__and2_4", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_1 = logic_module( - "sky130_fd_sc_ls__and2b_1", - "Low Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_2 = logic_module( - "sky130_fd_sc_ls__and2b_2", - "Low Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_4 = logic_module( - "sky130_fd_sc_ls__and2b_4", - "Low Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_1 = logic_module( - "sky130_fd_sc_ls__and3_1", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_2 = logic_module( - "sky130_fd_sc_ls__and3_2", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_4 = logic_module( - "sky130_fd_sc_ls__and3_4", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_1 = logic_module( - "sky130_fd_sc_ls__and3b_1", - "Low Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_2 = logic_module( - "sky130_fd_sc_ls__and3b_2", - "Low Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_4 = logic_module( - "sky130_fd_sc_ls__and3b_4", - "Low Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_1 = logic_module( - "sky130_fd_sc_ls__and4_1", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_2 = logic_module( - "sky130_fd_sc_ls__and4_2", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_4 = logic_module( - "sky130_fd_sc_ls__and4_4", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_1 = logic_module( - "sky130_fd_sc_ls__and4b_1", - "Low Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_2 = logic_module( - "sky130_fd_sc_ls__and4b_2", - "Low Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_4 = logic_module( - "sky130_fd_sc_ls__and4b_4", - "Low Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_1 = logic_module( - "sky130_fd_sc_ls__and4bb_1", - "Low Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_2 = logic_module( - "sky130_fd_sc_ls__and4bb_2", - "Low Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_4 = logic_module( - "sky130_fd_sc_ls__and4bb_4", - "Low Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_1 = logic_module( - "sky130_fd_sc_ls__buf_1", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_2 = logic_module( - "sky130_fd_sc_ls__buf_2", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_4 = logic_module( - "sky130_fd_sc_ls__buf_4", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_8 = logic_module( - "sky130_fd_sc_ls__buf_8", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -buf_16 = logic_module( - "sky130_fd_sc_ls__buf_16", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "X"] -) -bufbuf_8 = logic_module( - "sky130_fd_sc_ls__bufbuf_8", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufbuf_16 = logic_module( - "sky130_fd_sc_ls__bufbuf_16", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufinv_8 = logic_module( - "sky130_fd_sc_ls__bufinv_8", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -bufinv_16 = logic_module( - "sky130_fd_sc_ls__bufinv_16", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkbuf_1 = logic_module( - "sky130_fd_sc_ls__clkbuf_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_2 = logic_module( - "sky130_fd_sc_ls__clkbuf_2", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_4 = logic_module( - "sky130_fd_sc_ls__clkbuf_4", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_8 = logic_module( - "sky130_fd_sc_ls__clkbuf_8", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_16 = logic_module( - "sky130_fd_sc_ls__clkbuf_16", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlyinv3sd1_1 = logic_module( - "sky130_fd_sc_ls__clkdlyinv3sd1_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv3sd2_1 = logic_module( - "sky130_fd_sc_ls__clkdlyinv3sd2_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv3sd3_1 = logic_module( - "sky130_fd_sc_ls__clkdlyinv3sd3_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv5sd1_1 = logic_module( - "sky130_fd_sc_ls__clkdlyinv5sd1_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv5sd2_1 = logic_module( - "sky130_fd_sc_ls__clkdlyinv5sd2_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv5sd3_1 = logic_module( - "sky130_fd_sc_ls__clkdlyinv5sd3_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_1 = logic_module( - "sky130_fd_sc_ls__clkinv_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_2 = logic_module( - "sky130_fd_sc_ls__clkinv_2", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_4 = logic_module( - "sky130_fd_sc_ls__clkinv_4", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_8 = logic_module( - "sky130_fd_sc_ls__clkinv_8", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_16 = logic_module( - "sky130_fd_sc_ls__clkinv_16", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -conb_1 = logic_module( - "sky130_fd_sc_ls__conb_1", - "Low Speed", - ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], -) -decap_4 = logic_module( - "sky130_fd_sc_ls__decap_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_8 = logic_module( - "sky130_fd_sc_ls__decap_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -decaphe_2 = logic_module( - "sky130_fd_sc_ls__decaphe_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -decaphe_3 = logic_module( - "sky130_fd_sc_ls__decaphe_3", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -decaphe_4 = logic_module( - "sky130_fd_sc_ls__decaphe_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -decaphe_6 = logic_module( - "sky130_fd_sc_ls__decaphe_6", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -decaphe_8 = logic_module( - "sky130_fd_sc_ls__decaphe_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -decaphe_18 = logic_module( - "sky130_fd_sc_ls__decaphe_18", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -decaphetap_2 = logic_module( - "sky130_fd_sc_ls__decaphetap_2", "Low Speed", ["VGND", "VPB", "VPWR"] -) -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"], -) -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"], -) -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"], -) -dfrbp_1 = logic_module( - "sky130_fd_sc_ls__dfrbp_1", - "Low Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrbp_2 = logic_module( - "sky130_fd_sc_ls__dfrbp_2", - "Low Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrtn_1 = logic_module( - "sky130_fd_sc_ls__dfrtn_1", - "Low Speed", - ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_1 = logic_module( - "sky130_fd_sc_ls__dfrtp_1", - "Low Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_2 = logic_module( - "sky130_fd_sc_ls__dfrtp_2", - "Low Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_4 = logic_module( - "sky130_fd_sc_ls__dfrtp_4", - "Low Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfsbp_1 = logic_module( - "sky130_fd_sc_ls__dfsbp_1", - "Low Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfsbp_2 = logic_module( - "sky130_fd_sc_ls__dfsbp_2", - "Low Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfstp_1 = logic_module( - "sky130_fd_sc_ls__dfstp_1", - "Low Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_2 = logic_module( - "sky130_fd_sc_ls__dfstp_2", - "Low Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_4 = logic_module( - "sky130_fd_sc_ls__dfstp_4", - "Low Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxbp_1 = logic_module( - "sky130_fd_sc_ls__dfxbp_1", - "Low Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxbp_2 = logic_module( - "sky130_fd_sc_ls__dfxbp_2", - "Low Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxtp_1 = logic_module( - "sky130_fd_sc_ls__dfxtp_1", - "Low Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_2 = logic_module( - "sky130_fd_sc_ls__dfxtp_2", - "Low Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_4 = logic_module( - "sky130_fd_sc_ls__dfxtp_4", - "Low Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -diode_2 = logic_module( - "sky130_fd_sc_ls__diode_2", "Low Speed", ["DIODE", "VGND", "VNB", "VPB", "VPWR"] -) -dlclkp_1 = logic_module( - "sky130_fd_sc_ls__dlclkp_1", - "Low Speed", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_2 = logic_module( - "sky130_fd_sc_ls__dlclkp_2", - "Low Speed", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_4 = logic_module( - "sky130_fd_sc_ls__dlclkp_4", - "Low Speed", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlrbn_1 = logic_module( - "sky130_fd_sc_ls__dlrbn_1", - "Low Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbn_2 = logic_module( - "sky130_fd_sc_ls__dlrbn_2", - "Low Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_1 = logic_module( - "sky130_fd_sc_ls__dlrbp_1", - "Low Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_2 = logic_module( - "sky130_fd_sc_ls__dlrbp_2", - "Low Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrtn_1 = logic_module( - "sky130_fd_sc_ls__dlrtn_1", - "Low Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_2 = logic_module( - "sky130_fd_sc_ls__dlrtn_2", - "Low Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_4 = logic_module( - "sky130_fd_sc_ls__dlrtn_4", - "Low Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_1 = logic_module( - "sky130_fd_sc_ls__dlrtp_1", - "Low Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_2 = logic_module( - "sky130_fd_sc_ls__dlrtp_2", - "Low Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_4 = logic_module( - "sky130_fd_sc_ls__dlrtp_4", - "Low Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxbn_1 = logic_module( - "sky130_fd_sc_ls__dlxbn_1", - "Low Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbn_2 = logic_module( - "sky130_fd_sc_ls__dlxbn_2", - "Low Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbp_1 = logic_module( - "sky130_fd_sc_ls__dlxbp_1", - "Low Speed", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxtn_1 = logic_module( - "sky130_fd_sc_ls__dlxtn_1", - "Low Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_2 = logic_module( - "sky130_fd_sc_ls__dlxtn_2", - "Low Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_4 = logic_module( - "sky130_fd_sc_ls__dlxtn_4", - "Low Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtp_1 = logic_module( - "sky130_fd_sc_ls__dlxtp_1", - "Low Speed", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlygate4sd1_1 = logic_module( - "sky130_fd_sc_ls__dlygate4sd1_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4sd2_1 = logic_module( - "sky130_fd_sc_ls__dlygate4sd2_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4sd3_1 = logic_module( - "sky130_fd_sc_ls__dlygate4sd3_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s2s_1 = logic_module( - "sky130_fd_sc_ls__dlymetal6s2s_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s4s_1 = logic_module( - "sky130_fd_sc_ls__dlymetal6s4s_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s6s_1 = logic_module( - "sky130_fd_sc_ls__dlymetal6s6s_1", - "Low Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -ebufn_1 = logic_module( - "sky130_fd_sc_ls__ebufn_1", - "Low Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_2 = logic_module( - "sky130_fd_sc_ls__ebufn_2", - "Low Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_4 = logic_module( - "sky130_fd_sc_ls__ebufn_4", - "Low Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_8 = logic_module( - "sky130_fd_sc_ls__ebufn_8", - "Low Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -edfxbp_1 = logic_module( - "sky130_fd_sc_ls__edfxbp_1", - "Low Speed", - ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -edfxtp_1 = logic_module( - "sky130_fd_sc_ls__edfxtp_1", - "Low Speed", - ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -einvn_1 = logic_module( - "sky130_fd_sc_ls__einvn_1", - "Low Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_2 = logic_module( - "sky130_fd_sc_ls__einvn_2", - "Low Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_4 = logic_module( - "sky130_fd_sc_ls__einvn_4", - "Low Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_8 = logic_module( - "sky130_fd_sc_ls__einvn_8", - "Low Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_1 = logic_module( - "sky130_fd_sc_ls__einvp_1", - "Low Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_2 = logic_module( - "sky130_fd_sc_ls__einvp_2", - "Low Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_4 = logic_module( - "sky130_fd_sc_ls__einvp_4", - "Low Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_8 = logic_module( - "sky130_fd_sc_ls__einvp_8", - "Low Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -fa_1 = logic_module( - "sky130_fd_sc_ls__fa_1", - "Low Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_2 = logic_module( - "sky130_fd_sc_ls__fa_2", - "Low Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_4 = logic_module( - "sky130_fd_sc_ls__fa_4", - "Low Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_1 = logic_module( - "sky130_fd_sc_ls__fah_1", - "Low Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_2 = logic_module( - "sky130_fd_sc_ls__fah_2", - "Low Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_4 = logic_module( - "sky130_fd_sc_ls__fah_4", - "Low Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fahcin_1 = logic_module( - "sky130_fd_sc_ls__fahcin_1", - "Low Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fahcon_1 = logic_module( - "sky130_fd_sc_ls__fahcon_1", - "Low Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"], -) -fill_1 = logic_module( - "sky130_fd_sc_ls__fill_1", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_2 = logic_module( - "sky130_fd_sc_ls__fill_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_4 = logic_module( - "sky130_fd_sc_ls__fill_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_8 = logic_module( - "sky130_fd_sc_ls__fill_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_diode_2 = logic_module( - "sky130_fd_sc_ls__fill_diode_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_diode_4 = logic_module( - "sky130_fd_sc_ls__fill_diode_4", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_diode_8 = logic_module( - "sky130_fd_sc_ls__fill_diode_8", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -ha_1 = logic_module( - "sky130_fd_sc_ls__ha_1", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_2 = logic_module( - "sky130_fd_sc_ls__ha_2", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_4 = logic_module( - "sky130_fd_sc_ls__ha_4", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -inv_1 = logic_module( - "sky130_fd_sc_ls__inv_1", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_2 = logic_module( - "sky130_fd_sc_ls__inv_2", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_4 = logic_module( - "sky130_fd_sc_ls__inv_4", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_8 = logic_module( - "sky130_fd_sc_ls__inv_8", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -inv_16 = logic_module( - "sky130_fd_sc_ls__inv_16", "Low Speed", ["A", "VGND", "VNB", "VPB", "VPWR", "Y"] -) -latchupcell = logic_module( - "sky130_fd_sc_ls__latchupcell", "Low Speed", ["VGND", "VPWR"] -) -maj3_1 = logic_module( - "sky130_fd_sc_ls__maj3_1", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_2 = logic_module( - "sky130_fd_sc_ls__maj3_2", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_4 = logic_module( - "sky130_fd_sc_ls__maj3_4", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_1 = logic_module( - "sky130_fd_sc_ls__mux2_1", - "Low Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_2 = logic_module( - "sky130_fd_sc_ls__mux2_2", - "Low Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_4 = logic_module( - "sky130_fd_sc_ls__mux2_4", - "Low Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2i_1 = logic_module( - "sky130_fd_sc_ls__mux2i_1", - "Low Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_2 = logic_module( - "sky130_fd_sc_ls__mux2i_2", - "Low Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_4 = logic_module( - "sky130_fd_sc_ls__mux2i_4", - "Low Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux4_1 = logic_module( - "sky130_fd_sc_ls__mux4_1", - "Low Speed", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_2 = logic_module( - "sky130_fd_sc_ls__mux4_2", - "Low Speed", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_4 = logic_module( - "sky130_fd_sc_ls__mux4_4", - "Low Speed", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -nand2_1 = logic_module( - "sky130_fd_sc_ls__nand2_1", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_2 = logic_module( - "sky130_fd_sc_ls__nand2_2", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_4 = logic_module( - "sky130_fd_sc_ls__nand2_4", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_8 = logic_module( - "sky130_fd_sc_ls__nand2_8", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_1 = logic_module( - "sky130_fd_sc_ls__nand2b_1", - "Low Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_2 = logic_module( - "sky130_fd_sc_ls__nand2b_2", - "Low Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_4 = logic_module( - "sky130_fd_sc_ls__nand2b_4", - "Low Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_1 = logic_module( - "sky130_fd_sc_ls__nand3_1", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_2 = logic_module( - "sky130_fd_sc_ls__nand3_2", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_4 = logic_module( - "sky130_fd_sc_ls__nand3_4", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_1 = logic_module( - "sky130_fd_sc_ls__nand3b_1", - "Low Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_2 = logic_module( - "sky130_fd_sc_ls__nand3b_2", - "Low Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_4 = logic_module( - "sky130_fd_sc_ls__nand3b_4", - "Low Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_1 = logic_module( - "sky130_fd_sc_ls__nand4_1", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_2 = logic_module( - "sky130_fd_sc_ls__nand4_2", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_4 = logic_module( - "sky130_fd_sc_ls__nand4_4", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_1 = logic_module( - "sky130_fd_sc_ls__nand4b_1", - "Low Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_2 = logic_module( - "sky130_fd_sc_ls__nand4b_2", - "Low Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_4 = logic_module( - "sky130_fd_sc_ls__nand4b_4", - "Low Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_1 = logic_module( - "sky130_fd_sc_ls__nand4bb_1", - "Low Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_2 = logic_module( - "sky130_fd_sc_ls__nand4bb_2", - "Low Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_4 = logic_module( - "sky130_fd_sc_ls__nand4bb_4", - "Low Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_1 = logic_module( - "sky130_fd_sc_ls__nor2_1", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_2 = logic_module( - "sky130_fd_sc_ls__nor2_2", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_4 = logic_module( - "sky130_fd_sc_ls__nor2_4", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_8 = logic_module( - "sky130_fd_sc_ls__nor2_8", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_1 = logic_module( - "sky130_fd_sc_ls__nor2b_1", - "Low Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_2 = logic_module( - "sky130_fd_sc_ls__nor2b_2", - "Low Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_4 = logic_module( - "sky130_fd_sc_ls__nor2b_4", - "Low Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_1 = logic_module( - "sky130_fd_sc_ls__nor3_1", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_2 = logic_module( - "sky130_fd_sc_ls__nor3_2", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_4 = logic_module( - "sky130_fd_sc_ls__nor3_4", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_1 = logic_module( - "sky130_fd_sc_ls__nor3b_1", - "Low Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_2 = logic_module( - "sky130_fd_sc_ls__nor3b_2", - "Low Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_4 = logic_module( - "sky130_fd_sc_ls__nor3b_4", - "Low Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_1 = logic_module( - "sky130_fd_sc_ls__nor4_1", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_2 = logic_module( - "sky130_fd_sc_ls__nor4_2", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_4 = logic_module( - "sky130_fd_sc_ls__nor4_4", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_1 = logic_module( - "sky130_fd_sc_ls__nor4b_1", - "Low Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_2 = logic_module( - "sky130_fd_sc_ls__nor4b_2", - "Low Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_4 = logic_module( - "sky130_fd_sc_ls__nor4b_4", - "Low Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_1 = logic_module( - "sky130_fd_sc_ls__nor4bb_1", - "Low Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_2 = logic_module( - "sky130_fd_sc_ls__nor4bb_2", - "Low Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_4 = logic_module( - "sky130_fd_sc_ls__nor4bb_4", - "Low Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2a_1 = logic_module( - "sky130_fd_sc_ls__o2bb2a_1", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_2 = logic_module( - "sky130_fd_sc_ls__o2bb2a_2", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_4 = logic_module( - "sky130_fd_sc_ls__o2bb2a_4", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2ai_1 = logic_module( - "sky130_fd_sc_ls__o2bb2ai_1", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_2 = logic_module( - "sky130_fd_sc_ls__o2bb2ai_2", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_4 = logic_module( - "sky130_fd_sc_ls__o2bb2ai_4", - "Low Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21a_1 = logic_module( - "sky130_fd_sc_ls__o21a_1", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_2 = logic_module( - "sky130_fd_sc_ls__o21a_2", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_4 = logic_module( - "sky130_fd_sc_ls__o21a_4", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ai_1 = logic_module( - "sky130_fd_sc_ls__o21ai_1", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_2 = logic_module( - "sky130_fd_sc_ls__o21ai_2", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_4 = logic_module( - "sky130_fd_sc_ls__o21ai_4", - "Low Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ba_1 = logic_module( - "sky130_fd_sc_ls__o21ba_1", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_2 = logic_module( - "sky130_fd_sc_ls__o21ba_2", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_4 = logic_module( - "sky130_fd_sc_ls__o21ba_4", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21bai_1 = logic_module( - "sky130_fd_sc_ls__o21bai_1", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_2 = logic_module( - "sky130_fd_sc_ls__o21bai_2", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_4 = logic_module( - "sky130_fd_sc_ls__o21bai_4", - "Low Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22a_1 = logic_module( - "sky130_fd_sc_ls__o22a_1", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_2 = logic_module( - "sky130_fd_sc_ls__o22a_2", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_4 = logic_module( - "sky130_fd_sc_ls__o22a_4", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22ai_1 = logic_module( - "sky130_fd_sc_ls__o22ai_1", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_2 = logic_module( - "sky130_fd_sc_ls__o22ai_2", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_4 = logic_module( - "sky130_fd_sc_ls__o22ai_4", - "Low Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31a_1 = logic_module( - "sky130_fd_sc_ls__o31a_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_2 = logic_module( - "sky130_fd_sc_ls__o31a_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_4 = logic_module( - "sky130_fd_sc_ls__o31a_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31ai_1 = logic_module( - "sky130_fd_sc_ls__o31ai_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_2 = logic_module( - "sky130_fd_sc_ls__o31ai_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_4 = logic_module( - "sky130_fd_sc_ls__o31ai_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32a_1 = logic_module( - "sky130_fd_sc_ls__o32a_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_2 = logic_module( - "sky130_fd_sc_ls__o32a_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_4 = logic_module( - "sky130_fd_sc_ls__o32a_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32ai_1 = logic_module( - "sky130_fd_sc_ls__o32ai_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_2 = logic_module( - "sky130_fd_sc_ls__o32ai_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_4 = logic_module( - "sky130_fd_sc_ls__o32ai_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41a_1 = logic_module( - "sky130_fd_sc_ls__o41a_1", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_2 = logic_module( - "sky130_fd_sc_ls__o41a_2", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_4 = logic_module( - "sky130_fd_sc_ls__o41a_4", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41ai_1 = logic_module( - "sky130_fd_sc_ls__o41ai_1", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_2 = logic_module( - "sky130_fd_sc_ls__o41ai_2", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_4 = logic_module( - "sky130_fd_sc_ls__o41ai_4", - "Low Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211a_1 = logic_module( - "sky130_fd_sc_ls__o211a_1", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_2 = logic_module( - "sky130_fd_sc_ls__o211a_2", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_4 = logic_module( - "sky130_fd_sc_ls__o211a_4", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211ai_1 = logic_module( - "sky130_fd_sc_ls__o211ai_1", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_2 = logic_module( - "sky130_fd_sc_ls__o211ai_2", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_4 = logic_module( - "sky130_fd_sc_ls__o211ai_4", - "Low Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221a_1 = logic_module( - "sky130_fd_sc_ls__o221a_1", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_2 = logic_module( - "sky130_fd_sc_ls__o221a_2", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_4 = logic_module( - "sky130_fd_sc_ls__o221a_4", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221ai_1 = logic_module( - "sky130_fd_sc_ls__o221ai_1", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_2 = logic_module( - "sky130_fd_sc_ls__o221ai_2", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_4 = logic_module( - "sky130_fd_sc_ls__o221ai_4", - "Low Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311a_1 = logic_module( - "sky130_fd_sc_ls__o311a_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_2 = logic_module( - "sky130_fd_sc_ls__o311a_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_4 = logic_module( - "sky130_fd_sc_ls__o311a_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311ai_1 = logic_module( - "sky130_fd_sc_ls__o311ai_1", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_2 = logic_module( - "sky130_fd_sc_ls__o311ai_2", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_4 = logic_module( - "sky130_fd_sc_ls__o311ai_4", - "Low Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111a_1 = logic_module( - "sky130_fd_sc_ls__o2111a_1", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_2 = logic_module( - "sky130_fd_sc_ls__o2111a_2", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_4 = logic_module( - "sky130_fd_sc_ls__o2111a_4", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111ai_1 = logic_module( - "sky130_fd_sc_ls__o2111ai_1", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_2 = logic_module( - "sky130_fd_sc_ls__o2111ai_2", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_4 = logic_module( - "sky130_fd_sc_ls__o2111ai_4", - "Low Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -or2_1 = logic_module( - "sky130_fd_sc_ls__or2_1", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_2 = logic_module( - "sky130_fd_sc_ls__or2_2", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_4 = logic_module( - "sky130_fd_sc_ls__or2_4", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_1 = logic_module( - "sky130_fd_sc_ls__or2b_1", - "Low Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_2 = logic_module( - "sky130_fd_sc_ls__or2b_2", - "Low Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_4 = logic_module( - "sky130_fd_sc_ls__or2b_4", - "Low Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_1 = logic_module( - "sky130_fd_sc_ls__or3_1", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_2 = logic_module( - "sky130_fd_sc_ls__or3_2", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_4 = logic_module( - "sky130_fd_sc_ls__or3_4", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_1 = logic_module( - "sky130_fd_sc_ls__or3b_1", - "Low Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_2 = logic_module( - "sky130_fd_sc_ls__or3b_2", - "Low Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_4 = logic_module( - "sky130_fd_sc_ls__or3b_4", - "Low Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_1 = logic_module( - "sky130_fd_sc_ls__or4_1", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_2 = logic_module( - "sky130_fd_sc_ls__or4_2", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_4 = logic_module( - "sky130_fd_sc_ls__or4_4", - "Low Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_1 = logic_module( - "sky130_fd_sc_ls__or4b_1", - "Low Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_2 = logic_module( - "sky130_fd_sc_ls__or4b_2", - "Low Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_4 = logic_module( - "sky130_fd_sc_ls__or4b_4", - "Low Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_1 = logic_module( - "sky130_fd_sc_ls__or4bb_1", - "Low Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_2 = logic_module( - "sky130_fd_sc_ls__or4bb_2", - "Low Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_4 = logic_module( - "sky130_fd_sc_ls__or4bb_4", - "Low Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -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"], -) -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"], -) -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", - ], -) -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"], -) -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"], -) -sdfrtn_1 = logic_module( - "sky130_fd_sc_ls__sdfrtn_1", - "Low Speed", - ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_1 = logic_module( - "sky130_fd_sc_ls__sdfrtp_1", - "Low Speed", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_2 = logic_module( - "sky130_fd_sc_ls__sdfrtp_2", - "Low Speed", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_4 = logic_module( - "sky130_fd_sc_ls__sdfrtp_4", - "Low Speed", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -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"], -) -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"], -) -sdfstp_1 = logic_module( - "sky130_fd_sc_ls__sdfstp_1", - "Low Speed", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_2 = logic_module( - "sky130_fd_sc_ls__sdfstp_2", - "Low Speed", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_4 = logic_module( - "sky130_fd_sc_ls__sdfstp_4", - "Low Speed", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxbp_1 = logic_module( - "sky130_fd_sc_ls__sdfxbp_1", - "Low Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxbp_2 = logic_module( - "sky130_fd_sc_ls__sdfxbp_2", - "Low Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxtp_1 = logic_module( - "sky130_fd_sc_ls__sdfxtp_1", - "Low Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_2 = logic_module( - "sky130_fd_sc_ls__sdfxtp_2", - "Low Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_4 = logic_module( - "sky130_fd_sc_ls__sdfxtp_4", - "Low Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdlclkp_1 = logic_module( - "sky130_fd_sc_ls__sdlclkp_1", - "Low Speed", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_2 = logic_module( - "sky130_fd_sc_ls__sdlclkp_2", - "Low Speed", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_4 = logic_module( - "sky130_fd_sc_ls__sdlclkp_4", - "Low Speed", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sedfxbp_1 = logic_module( - "sky130_fd_sc_ls__sedfxbp_1", - "Low Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sedfxbp_2 = logic_module( - "sky130_fd_sc_ls__sedfxbp_2", - "Low Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sedfxtp_1 = logic_module( - "sky130_fd_sc_ls__sedfxtp_1", - "Low Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sedfxtp_2 = logic_module( - "sky130_fd_sc_ls__sedfxtp_2", - "Low Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sedfxtp_4 = logic_module( - "sky130_fd_sc_ls__sedfxtp_4", - "Low Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -tap_1 = logic_module( - "sky130_fd_sc_ls__tap_1", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -tap_2 = logic_module( - "sky130_fd_sc_ls__tap_2", "Low Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -tapmet1_2 = logic_module( - "sky130_fd_sc_ls__tapmet1_2", "Low Speed", ["VGND", "VPB", "VPWR"] -) -tapvgnd2_1 = logic_module( - "sky130_fd_sc_ls__tapvgnd2_1", "Low Speed", ["VGND", "VPB", "VPWR"] -) -tapvgnd_1 = logic_module( - "sky130_fd_sc_ls__tapvgnd_1", "Low Speed", ["VGND", "VPB", "VPWR"] -) -tapvgndnovpb_1 = logic_module( - "sky130_fd_sc_ls__tapvgndnovpb_1", "Low Speed", ["VGND", "VPWR"] -) -tapvpwrvgnd_1 = logic_module( - "sky130_fd_sc_ls__tapvpwrvgnd_1", "Low Speed", ["VGND", "VPWR"] -) -xnor2_1 = logic_module( - "sky130_fd_sc_ls__xnor2_1", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_2 = logic_module( - "sky130_fd_sc_ls__xnor2_2", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_4 = logic_module( - "sky130_fd_sc_ls__xnor2_4", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor3_1 = logic_module( - "sky130_fd_sc_ls__xnor3_1", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_2 = logic_module( - "sky130_fd_sc_ls__xnor3_2", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_4 = logic_module( - "sky130_fd_sc_ls__xnor3_4", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_1 = logic_module( - "sky130_fd_sc_ls__xor2_1", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_2 = logic_module( - "sky130_fd_sc_ls__xor2_2", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_4 = logic_module( - "sky130_fd_sc_ls__xor2_4", - "Low Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_1 = logic_module( - "sky130_fd_sc_ls__xor3_1", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_2 = logic_module( - "sky130_fd_sc_ls__xor3_2", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_4 = logic_module( - "sky130_fd_sc_ls__xor3_4", - "Low Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) diff --git a/sky130/hdl21/sky130_gf/digital_cells/medium_speed.py b/sky130/hdl21/sky130_gf/digital_cells/medium_speed.py deleted file mode 100644 index 8f865ed4e..000000000 --- a/sky130/hdl21/sky130_gf/digital_cells/medium_speed.py +++ /dev/null @@ -1,1937 +0,0 @@ -from ..pdk_data import logic_module - -a2bb2o_1 = logic_module( - "sky130_fd_sc_ms__a2bb2o_1", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_2 = logic_module( - "sky130_fd_sc_ms__a2bb2o_2", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2o_4 = logic_module( - "sky130_fd_sc_ms__a2bb2o_4", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2bb2oi_1 = logic_module( - "sky130_fd_sc_ms__a2bb2oi_1", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_2 = logic_module( - "sky130_fd_sc_ms__a2bb2oi_2", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2bb2oi_4 = logic_module( - "sky130_fd_sc_ms__a2bb2oi_4", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21bo_1 = logic_module( - "sky130_fd_sc_ms__a21bo_1", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_2 = logic_module( - "sky130_fd_sc_ms__a21bo_2", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21bo_4 = logic_module( - "sky130_fd_sc_ms__a21bo_4", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21boi_1 = logic_module( - "sky130_fd_sc_ms__a21boi_1", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_2 = logic_module( - "sky130_fd_sc_ms__a21boi_2", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21boi_4 = logic_module( - "sky130_fd_sc_ms__a21boi_4", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21o_1 = logic_module( - "sky130_fd_sc_ms__a21o_1", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_2 = logic_module( - "sky130_fd_sc_ms__a21o_2", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21o_4 = logic_module( - "sky130_fd_sc_ms__a21o_4", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a21oi_1 = logic_module( - "sky130_fd_sc_ms__a21oi_1", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_2 = logic_module( - "sky130_fd_sc_ms__a21oi_2", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a21oi_4 = logic_module( - "sky130_fd_sc_ms__a21oi_4", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22o_1 = logic_module( - "sky130_fd_sc_ms__a22o_1", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_2 = logic_module( - "sky130_fd_sc_ms__a22o_2", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22o_4 = logic_module( - "sky130_fd_sc_ms__a22o_4", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a22oi_1 = logic_module( - "sky130_fd_sc_ms__a22oi_1", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_2 = logic_module( - "sky130_fd_sc_ms__a22oi_2", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a22oi_4 = logic_module( - "sky130_fd_sc_ms__a22oi_4", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31o_1 = logic_module( - "sky130_fd_sc_ms__a31o_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_2 = logic_module( - "sky130_fd_sc_ms__a31o_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31o_4 = logic_module( - "sky130_fd_sc_ms__a31o_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a31oi_1 = logic_module( - "sky130_fd_sc_ms__a31oi_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_2 = logic_module( - "sky130_fd_sc_ms__a31oi_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a31oi_4 = logic_module( - "sky130_fd_sc_ms__a31oi_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32o_1 = logic_module( - "sky130_fd_sc_ms__a32o_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_2 = logic_module( - "sky130_fd_sc_ms__a32o_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32o_4 = logic_module( - "sky130_fd_sc_ms__a32o_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a32oi_1 = logic_module( - "sky130_fd_sc_ms__a32oi_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_2 = logic_module( - "sky130_fd_sc_ms__a32oi_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a32oi_4 = logic_module( - "sky130_fd_sc_ms__a32oi_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41o_1 = logic_module( - "sky130_fd_sc_ms__a41o_1", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_2 = logic_module( - "sky130_fd_sc_ms__a41o_2", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41o_4 = logic_module( - "sky130_fd_sc_ms__a41o_4", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a41oi_1 = logic_module( - "sky130_fd_sc_ms__a41oi_1", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_2 = logic_module( - "sky130_fd_sc_ms__a41oi_2", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a41oi_4 = logic_module( - "sky130_fd_sc_ms__a41oi_4", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211o_1 = logic_module( - "sky130_fd_sc_ms__a211o_1", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_2 = logic_module( - "sky130_fd_sc_ms__a211o_2", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211o_4 = logic_module( - "sky130_fd_sc_ms__a211o_4", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a211oi_1 = logic_module( - "sky130_fd_sc_ms__a211oi_1", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_2 = logic_module( - "sky130_fd_sc_ms__a211oi_2", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a211oi_4 = logic_module( - "sky130_fd_sc_ms__a211oi_4", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221o_1 = logic_module( - "sky130_fd_sc_ms__a221o_1", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_2 = logic_module( - "sky130_fd_sc_ms__a221o_2", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221o_4 = logic_module( - "sky130_fd_sc_ms__a221o_4", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a221oi_1 = logic_module( - "sky130_fd_sc_ms__a221oi_1", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_2 = logic_module( - "sky130_fd_sc_ms__a221oi_2", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a221oi_4 = logic_module( - "sky130_fd_sc_ms__a221oi_4", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a222o_1 = logic_module( - "sky130_fd_sc_ms__a222o_1", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a222o_2 = logic_module( - "sky130_fd_sc_ms__a222o_2", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a222oi_1 = logic_module( - "sky130_fd_sc_ms__a222oi_1", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a222oi_2 = logic_module( - "sky130_fd_sc_ms__a222oi_2", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "C2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311o_1 = logic_module( - "sky130_fd_sc_ms__a311o_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_2 = logic_module( - "sky130_fd_sc_ms__a311o_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311o_4 = logic_module( - "sky130_fd_sc_ms__a311o_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a311oi_1 = logic_module( - "sky130_fd_sc_ms__a311oi_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_2 = logic_module( - "sky130_fd_sc_ms__a311oi_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a311oi_4 = logic_module( - "sky130_fd_sc_ms__a311oi_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111o_1 = logic_module( - "sky130_fd_sc_ms__a2111o_1", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_2 = logic_module( - "sky130_fd_sc_ms__a2111o_2", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111o_4 = logic_module( - "sky130_fd_sc_ms__a2111o_4", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -a2111oi_1 = logic_module( - "sky130_fd_sc_ms__a2111oi_1", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_2 = logic_module( - "sky130_fd_sc_ms__a2111oi_2", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -a2111oi_4 = logic_module( - "sky130_fd_sc_ms__a2111oi_4", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -and2_1 = logic_module( - "sky130_fd_sc_ms__and2_1", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_2 = logic_module( - "sky130_fd_sc_ms__and2_2", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2_4 = logic_module( - "sky130_fd_sc_ms__and2_4", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_1 = logic_module( - "sky130_fd_sc_ms__and2b_1", - "Medium Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_2 = logic_module( - "sky130_fd_sc_ms__and2b_2", - "Medium Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and2b_4 = logic_module( - "sky130_fd_sc_ms__and2b_4", - "Medium Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_1 = logic_module( - "sky130_fd_sc_ms__and3_1", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_2 = logic_module( - "sky130_fd_sc_ms__and3_2", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3_4 = logic_module( - "sky130_fd_sc_ms__and3_4", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_1 = logic_module( - "sky130_fd_sc_ms__and3b_1", - "Medium Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_2 = logic_module( - "sky130_fd_sc_ms__and3b_2", - "Medium Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and3b_4 = logic_module( - "sky130_fd_sc_ms__and3b_4", - "Medium Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_1 = logic_module( - "sky130_fd_sc_ms__and4_1", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_2 = logic_module( - "sky130_fd_sc_ms__and4_2", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4_4 = logic_module( - "sky130_fd_sc_ms__and4_4", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_1 = logic_module( - "sky130_fd_sc_ms__and4b_1", - "Medium Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_2 = logic_module( - "sky130_fd_sc_ms__and4b_2", - "Medium Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4b_4 = logic_module( - "sky130_fd_sc_ms__and4b_4", - "Medium Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_1 = logic_module( - "sky130_fd_sc_ms__and4bb_1", - "Medium Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_2 = logic_module( - "sky130_fd_sc_ms__and4bb_2", - "Medium Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -and4bb_4 = logic_module( - "sky130_fd_sc_ms__and4bb_4", - "Medium Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_1 = logic_module( - "sky130_fd_sc_ms__buf_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_2 = logic_module( - "sky130_fd_sc_ms__buf_2", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_4 = logic_module( - "sky130_fd_sc_ms__buf_4", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_8 = logic_module( - "sky130_fd_sc_ms__buf_8", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -buf_16 = logic_module( - "sky130_fd_sc_ms__buf_16", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufbuf_8 = logic_module( - "sky130_fd_sc_ms__bufbuf_8", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufbuf_16 = logic_module( - "sky130_fd_sc_ms__bufbuf_16", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -bufinv_8 = logic_module( - "sky130_fd_sc_ms__bufinv_8", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -bufinv_16 = logic_module( - "sky130_fd_sc_ms__bufinv_16", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkbuf_1 = logic_module( - "sky130_fd_sc_ms__clkbuf_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_2 = logic_module( - "sky130_fd_sc_ms__clkbuf_2", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_4 = logic_module( - "sky130_fd_sc_ms__clkbuf_4", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_8 = logic_module( - "sky130_fd_sc_ms__clkbuf_8", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkbuf_16 = logic_module( - "sky130_fd_sc_ms__clkbuf_16", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -clkdlyinv3sd1_1 = logic_module( - "sky130_fd_sc_ms__clkdlyinv3sd1_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv3sd2_1 = logic_module( - "sky130_fd_sc_ms__clkdlyinv3sd2_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv3sd3_1 = logic_module( - "sky130_fd_sc_ms__clkdlyinv3sd3_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv5sd1_1 = logic_module( - "sky130_fd_sc_ms__clkdlyinv5sd1_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv5sd2_1 = logic_module( - "sky130_fd_sc_ms__clkdlyinv5sd2_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkdlyinv5sd3_1 = logic_module( - "sky130_fd_sc_ms__clkdlyinv5sd3_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_1 = logic_module( - "sky130_fd_sc_ms__clkinv_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_2 = logic_module( - "sky130_fd_sc_ms__clkinv_2", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_4 = logic_module( - "sky130_fd_sc_ms__clkinv_4", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_8 = logic_module( - "sky130_fd_sc_ms__clkinv_8", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -clkinv_16 = logic_module( - "sky130_fd_sc_ms__clkinv_16", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -conb_1 = logic_module( - "sky130_fd_sc_ms__conb_1", - "Medium Speed", - ["VGND", "VNB", "VPB", "VPWR", "HI", "LO"], -) -decap_4 = logic_module( - "sky130_fd_sc_ms__decap_4", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -decap_8 = logic_module( - "sky130_fd_sc_ms__decap_8", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -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"], -) -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"], -) -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"], -) -dfrbp_1 = logic_module( - "sky130_fd_sc_ms__dfrbp_1", - "Medium Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrbp_2 = logic_module( - "sky130_fd_sc_ms__dfrbp_2", - "Medium Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfrtn_1 = logic_module( - "sky130_fd_sc_ms__dfrtn_1", - "Medium Speed", - ["CLK_N", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_1 = logic_module( - "sky130_fd_sc_ms__dfrtp_1", - "Medium Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_2 = logic_module( - "sky130_fd_sc_ms__dfrtp_2", - "Medium Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfrtp_4 = logic_module( - "sky130_fd_sc_ms__dfrtp_4", - "Medium Speed", - ["CLK", "D", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfsbp_1 = logic_module( - "sky130_fd_sc_ms__dfsbp_1", - "Medium Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfsbp_2 = logic_module( - "sky130_fd_sc_ms__dfsbp_2", - "Medium Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfstp_1 = logic_module( - "sky130_fd_sc_ms__dfstp_1", - "Medium Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_2 = logic_module( - "sky130_fd_sc_ms__dfstp_2", - "Medium Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfstp_4 = logic_module( - "sky130_fd_sc_ms__dfstp_4", - "Medium Speed", - ["CLK", "D", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxbp_1 = logic_module( - "sky130_fd_sc_ms__dfxbp_1", - "Medium Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxbp_2 = logic_module( - "sky130_fd_sc_ms__dfxbp_2", - "Medium Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dfxtp_1 = logic_module( - "sky130_fd_sc_ms__dfxtp_1", - "Medium Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_2 = logic_module( - "sky130_fd_sc_ms__dfxtp_2", - "Medium Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dfxtp_4 = logic_module( - "sky130_fd_sc_ms__dfxtp_4", - "Medium Speed", - ["CLK", "D", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -diode_2 = logic_module( - "sky130_fd_sc_ms__diode_2", - "Medium Speed", - ["DIODE", "VGND", "VNB", "VPB", "VPWR"], -) -dlclkp_1 = logic_module( - "sky130_fd_sc_ms__dlclkp_1", - "Medium Speed", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_2 = logic_module( - "sky130_fd_sc_ms__dlclkp_2", - "Medium Speed", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlclkp_4 = logic_module( - "sky130_fd_sc_ms__dlclkp_4", - "Medium Speed", - ["CLK", "GATE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -dlrbn_1 = logic_module( - "sky130_fd_sc_ms__dlrbn_1", - "Medium Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbn_2 = logic_module( - "sky130_fd_sc_ms__dlrbn_2", - "Medium Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_1 = logic_module( - "sky130_fd_sc_ms__dlrbp_1", - "Medium Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrbp_2 = logic_module( - "sky130_fd_sc_ms__dlrbp_2", - "Medium Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlrtn_1 = logic_module( - "sky130_fd_sc_ms__dlrtn_1", - "Medium Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_2 = logic_module( - "sky130_fd_sc_ms__dlrtn_2", - "Medium Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtn_4 = logic_module( - "sky130_fd_sc_ms__dlrtn_4", - "Medium Speed", - ["D", "GATE_N", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_1 = logic_module( - "sky130_fd_sc_ms__dlrtp_1", - "Medium Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_2 = logic_module( - "sky130_fd_sc_ms__dlrtp_2", - "Medium Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlrtp_4 = logic_module( - "sky130_fd_sc_ms__dlrtp_4", - "Medium Speed", - ["D", "GATE", "RESET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxbn_1 = logic_module( - "sky130_fd_sc_ms__dlxbn_1", - "Medium Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbn_2 = logic_module( - "sky130_fd_sc_ms__dlxbn_2", - "Medium Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxbp_1 = logic_module( - "sky130_fd_sc_ms__dlxbp_1", - "Medium Speed", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -dlxtn_1 = logic_module( - "sky130_fd_sc_ms__dlxtn_1", - "Medium Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_2 = logic_module( - "sky130_fd_sc_ms__dlxtn_2", - "Medium Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtn_4 = logic_module( - "sky130_fd_sc_ms__dlxtn_4", - "Medium Speed", - ["D", "GATE_N", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlxtp_1 = logic_module( - "sky130_fd_sc_ms__dlxtp_1", - "Medium Speed", - ["D", "GATE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -dlygate4sd1_1 = logic_module( - "sky130_fd_sc_ms__dlygate4sd1_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4sd2_1 = logic_module( - "sky130_fd_sc_ms__dlygate4sd2_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlygate4sd3_1 = logic_module( - "sky130_fd_sc_ms__dlygate4sd3_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s2s_1 = logic_module( - "sky130_fd_sc_ms__dlymetal6s2s_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s4s_1 = logic_module( - "sky130_fd_sc_ms__dlymetal6s4s_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -dlymetal6s6s_1 = logic_module( - "sky130_fd_sc_ms__dlymetal6s6s_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "X"], -) -ebufn_1 = logic_module( - "sky130_fd_sc_ms__ebufn_1", - "Medium Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_2 = logic_module( - "sky130_fd_sc_ms__ebufn_2", - "Medium Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_4 = logic_module( - "sky130_fd_sc_ms__ebufn_4", - "Medium Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -ebufn_8 = logic_module( - "sky130_fd_sc_ms__ebufn_8", - "Medium Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -edfxbp_1 = logic_module( - "sky130_fd_sc_ms__edfxbp_1", - "Medium Speed", - ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -edfxtp_1 = logic_module( - "sky130_fd_sc_ms__edfxtp_1", - "Medium Speed", - ["CLK", "D", "DE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -einvn_1 = logic_module( - "sky130_fd_sc_ms__einvn_1", - "Medium Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_2 = logic_module( - "sky130_fd_sc_ms__einvn_2", - "Medium Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_4 = logic_module( - "sky130_fd_sc_ms__einvn_4", - "Medium Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvn_8 = logic_module( - "sky130_fd_sc_ms__einvn_8", - "Medium Speed", - ["A", "TE_B", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_1 = logic_module( - "sky130_fd_sc_ms__einvp_1", - "Medium Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_2 = logic_module( - "sky130_fd_sc_ms__einvp_2", - "Medium Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_4 = logic_module( - "sky130_fd_sc_ms__einvp_4", - "Medium Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -einvp_8 = logic_module( - "sky130_fd_sc_ms__einvp_8", - "Medium Speed", - ["A", "TE", "VGND", "VNB", "VPB", "VPWR", "Z"], -) -fa_1 = logic_module( - "sky130_fd_sc_ms__fa_1", - "Medium Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_2 = logic_module( - "sky130_fd_sc_ms__fa_2", - "Medium Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fa_4 = logic_module( - "sky130_fd_sc_ms__fa_4", - "Medium Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_1 = logic_module( - "sky130_fd_sc_ms__fah_1", - "Medium Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_2 = logic_module( - "sky130_fd_sc_ms__fah_2", - "Medium Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fah_4 = logic_module( - "sky130_fd_sc_ms__fah_4", - "Medium Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fahcin_1 = logic_module( - "sky130_fd_sc_ms__fahcin_1", - "Medium Speed", - ["A", "B", "CIN", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -fahcon_1 = logic_module( - "sky130_fd_sc_ms__fahcon_1", - "Medium Speed", - ["A", "B", "CI", "VGND", "VNB", "VPB", "VPWR", "COUT_N", "SUM"], -) -fill_1 = logic_module( - "sky130_fd_sc_ms__fill_1", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_2 = logic_module( - "sky130_fd_sc_ms__fill_2", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_4 = logic_module( - "sky130_fd_sc_ms__fill_4", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_8 = logic_module( - "sky130_fd_sc_ms__fill_8", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_diode_2 = logic_module( - "sky130_fd_sc_ms__fill_diode_2", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_diode_4 = logic_module( - "sky130_fd_sc_ms__fill_diode_4", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -fill_diode_8 = logic_module( - "sky130_fd_sc_ms__fill_diode_8", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -ha_1 = logic_module( - "sky130_fd_sc_ms__ha_1", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_2 = logic_module( - "sky130_fd_sc_ms__ha_2", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -ha_4 = logic_module( - "sky130_fd_sc_ms__ha_4", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "COUT", "SUM"], -) -inv_1 = logic_module( - "sky130_fd_sc_ms__inv_1", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_2 = logic_module( - "sky130_fd_sc_ms__inv_2", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_4 = logic_module( - "sky130_fd_sc_ms__inv_4", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_8 = logic_module( - "sky130_fd_sc_ms__inv_8", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -inv_16 = logic_module( - "sky130_fd_sc_ms__inv_16", - "Medium Speed", - ["A", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -latchupcell = logic_module( - "sky130_fd_sc_ms__latchupcell", "Medium Speed", ["VGND", "VPWR"] -) -maj3_1 = logic_module( - "sky130_fd_sc_ms__maj3_1", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_2 = logic_module( - "sky130_fd_sc_ms__maj3_2", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -maj3_4 = logic_module( - "sky130_fd_sc_ms__maj3_4", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_1 = logic_module( - "sky130_fd_sc_ms__mux2_1", - "Medium Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_2 = logic_module( - "sky130_fd_sc_ms__mux2_2", - "Medium Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2_4 = logic_module( - "sky130_fd_sc_ms__mux2_4", - "Medium Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux2i_1 = logic_module( - "sky130_fd_sc_ms__mux2i_1", - "Medium Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_2 = logic_module( - "sky130_fd_sc_ms__mux2i_2", - "Medium Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux2i_4 = logic_module( - "sky130_fd_sc_ms__mux2i_4", - "Medium Speed", - ["A0", "A1", "S", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -mux4_1 = logic_module( - "sky130_fd_sc_ms__mux4_1", - "Medium Speed", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_2 = logic_module( - "sky130_fd_sc_ms__mux4_2", - "Medium Speed", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -mux4_4 = logic_module( - "sky130_fd_sc_ms__mux4_4", - "Medium Speed", - ["A0", "A1", "A2", "A3", "S0", "S1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -nand2_1 = logic_module( - "sky130_fd_sc_ms__nand2_1", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_2 = logic_module( - "sky130_fd_sc_ms__nand2_2", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_4 = logic_module( - "sky130_fd_sc_ms__nand2_4", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2_8 = logic_module( - "sky130_fd_sc_ms__nand2_8", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_1 = logic_module( - "sky130_fd_sc_ms__nand2b_1", - "Medium Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_2 = logic_module( - "sky130_fd_sc_ms__nand2b_2", - "Medium Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand2b_4 = logic_module( - "sky130_fd_sc_ms__nand2b_4", - "Medium Speed", - ["A_N", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_1 = logic_module( - "sky130_fd_sc_ms__nand3_1", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_2 = logic_module( - "sky130_fd_sc_ms__nand3_2", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3_4 = logic_module( - "sky130_fd_sc_ms__nand3_4", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_1 = logic_module( - "sky130_fd_sc_ms__nand3b_1", - "Medium Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_2 = logic_module( - "sky130_fd_sc_ms__nand3b_2", - "Medium Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand3b_4 = logic_module( - "sky130_fd_sc_ms__nand3b_4", - "Medium Speed", - ["A_N", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_1 = logic_module( - "sky130_fd_sc_ms__nand4_1", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_2 = logic_module( - "sky130_fd_sc_ms__nand4_2", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4_4 = logic_module( - "sky130_fd_sc_ms__nand4_4", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_1 = logic_module( - "sky130_fd_sc_ms__nand4b_1", - "Medium Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_2 = logic_module( - "sky130_fd_sc_ms__nand4b_2", - "Medium Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4b_4 = logic_module( - "sky130_fd_sc_ms__nand4b_4", - "Medium Speed", - ["A_N", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_1 = logic_module( - "sky130_fd_sc_ms__nand4bb_1", - "Medium Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_2 = logic_module( - "sky130_fd_sc_ms__nand4bb_2", - "Medium Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nand4bb_4 = logic_module( - "sky130_fd_sc_ms__nand4bb_4", - "Medium Speed", - ["A_N", "B_N", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_1 = logic_module( - "sky130_fd_sc_ms__nor2_1", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_2 = logic_module( - "sky130_fd_sc_ms__nor2_2", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_4 = logic_module( - "sky130_fd_sc_ms__nor2_4", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2_8 = logic_module( - "sky130_fd_sc_ms__nor2_8", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_1 = logic_module( - "sky130_fd_sc_ms__nor2b_1", - "Medium Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_2 = logic_module( - "sky130_fd_sc_ms__nor2b_2", - "Medium Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor2b_4 = logic_module( - "sky130_fd_sc_ms__nor2b_4", - "Medium Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_1 = logic_module( - "sky130_fd_sc_ms__nor3_1", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_2 = logic_module( - "sky130_fd_sc_ms__nor3_2", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3_4 = logic_module( - "sky130_fd_sc_ms__nor3_4", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_1 = logic_module( - "sky130_fd_sc_ms__nor3b_1", - "Medium Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_2 = logic_module( - "sky130_fd_sc_ms__nor3b_2", - "Medium Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor3b_4 = logic_module( - "sky130_fd_sc_ms__nor3b_4", - "Medium Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_1 = logic_module( - "sky130_fd_sc_ms__nor4_1", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_2 = logic_module( - "sky130_fd_sc_ms__nor4_2", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4_4 = logic_module( - "sky130_fd_sc_ms__nor4_4", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_1 = logic_module( - "sky130_fd_sc_ms__nor4b_1", - "Medium Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_2 = logic_module( - "sky130_fd_sc_ms__nor4b_2", - "Medium Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4b_4 = logic_module( - "sky130_fd_sc_ms__nor4b_4", - "Medium Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_1 = logic_module( - "sky130_fd_sc_ms__nor4bb_1", - "Medium Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_2 = logic_module( - "sky130_fd_sc_ms__nor4bb_2", - "Medium Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -nor4bb_4 = logic_module( - "sky130_fd_sc_ms__nor4bb_4", - "Medium Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2a_1 = logic_module( - "sky130_fd_sc_ms__o2bb2a_1", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_2 = logic_module( - "sky130_fd_sc_ms__o2bb2a_2", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2a_4 = logic_module( - "sky130_fd_sc_ms__o2bb2a_4", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2bb2ai_1 = logic_module( - "sky130_fd_sc_ms__o2bb2ai_1", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_2 = logic_module( - "sky130_fd_sc_ms__o2bb2ai_2", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2bb2ai_4 = logic_module( - "sky130_fd_sc_ms__o2bb2ai_4", - "Medium Speed", - ["A1_N", "A2_N", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21a_1 = logic_module( - "sky130_fd_sc_ms__o21a_1", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_2 = logic_module( - "sky130_fd_sc_ms__o21a_2", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21a_4 = logic_module( - "sky130_fd_sc_ms__o21a_4", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ai_1 = logic_module( - "sky130_fd_sc_ms__o21ai_1", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_2 = logic_module( - "sky130_fd_sc_ms__o21ai_2", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ai_4 = logic_module( - "sky130_fd_sc_ms__o21ai_4", - "Medium Speed", - ["A1", "A2", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21ba_1 = logic_module( - "sky130_fd_sc_ms__o21ba_1", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_2 = logic_module( - "sky130_fd_sc_ms__o21ba_2", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21ba_4 = logic_module( - "sky130_fd_sc_ms__o21ba_4", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o21bai_1 = logic_module( - "sky130_fd_sc_ms__o21bai_1", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_2 = logic_module( - "sky130_fd_sc_ms__o21bai_2", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o21bai_4 = logic_module( - "sky130_fd_sc_ms__o21bai_4", - "Medium Speed", - ["A1", "A2", "B1_N", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22a_1 = logic_module( - "sky130_fd_sc_ms__o22a_1", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_2 = logic_module( - "sky130_fd_sc_ms__o22a_2", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22a_4 = logic_module( - "sky130_fd_sc_ms__o22a_4", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o22ai_1 = logic_module( - "sky130_fd_sc_ms__o22ai_1", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_2 = logic_module( - "sky130_fd_sc_ms__o22ai_2", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o22ai_4 = logic_module( - "sky130_fd_sc_ms__o22ai_4", - "Medium Speed", - ["A1", "A2", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31a_1 = logic_module( - "sky130_fd_sc_ms__o31a_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_2 = logic_module( - "sky130_fd_sc_ms__o31a_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31a_4 = logic_module( - "sky130_fd_sc_ms__o31a_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o31ai_1 = logic_module( - "sky130_fd_sc_ms__o31ai_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_2 = logic_module( - "sky130_fd_sc_ms__o31ai_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o31ai_4 = logic_module( - "sky130_fd_sc_ms__o31ai_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32a_1 = logic_module( - "sky130_fd_sc_ms__o32a_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_2 = logic_module( - "sky130_fd_sc_ms__o32a_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32a_4 = logic_module( - "sky130_fd_sc_ms__o32a_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o32ai_1 = logic_module( - "sky130_fd_sc_ms__o32ai_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_2 = logic_module( - "sky130_fd_sc_ms__o32ai_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o32ai_4 = logic_module( - "sky130_fd_sc_ms__o32ai_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "B2", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41a_1 = logic_module( - "sky130_fd_sc_ms__o41a_1", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_2 = logic_module( - "sky130_fd_sc_ms__o41a_2", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41a_4 = logic_module( - "sky130_fd_sc_ms__o41a_4", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o41ai_1 = logic_module( - "sky130_fd_sc_ms__o41ai_1", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_2 = logic_module( - "sky130_fd_sc_ms__o41ai_2", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o41ai_4 = logic_module( - "sky130_fd_sc_ms__o41ai_4", - "Medium Speed", - ["A1", "A2", "A3", "A4", "B1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211a_1 = logic_module( - "sky130_fd_sc_ms__o211a_1", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_2 = logic_module( - "sky130_fd_sc_ms__o211a_2", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211a_4 = logic_module( - "sky130_fd_sc_ms__o211a_4", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o211ai_1 = logic_module( - "sky130_fd_sc_ms__o211ai_1", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_2 = logic_module( - "sky130_fd_sc_ms__o211ai_2", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o211ai_4 = logic_module( - "sky130_fd_sc_ms__o211ai_4", - "Medium Speed", - ["A1", "A2", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221a_1 = logic_module( - "sky130_fd_sc_ms__o221a_1", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_2 = logic_module( - "sky130_fd_sc_ms__o221a_2", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221a_4 = logic_module( - "sky130_fd_sc_ms__o221a_4", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o221ai_1 = logic_module( - "sky130_fd_sc_ms__o221ai_1", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_2 = logic_module( - "sky130_fd_sc_ms__o221ai_2", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o221ai_4 = logic_module( - "sky130_fd_sc_ms__o221ai_4", - "Medium Speed", - ["A1", "A2", "B1", "B2", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311a_1 = logic_module( - "sky130_fd_sc_ms__o311a_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_2 = logic_module( - "sky130_fd_sc_ms__o311a_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311a_4 = logic_module( - "sky130_fd_sc_ms__o311a_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o311ai_1 = logic_module( - "sky130_fd_sc_ms__o311ai_1", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_2 = logic_module( - "sky130_fd_sc_ms__o311ai_2", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o311ai_4 = logic_module( - "sky130_fd_sc_ms__o311ai_4", - "Medium Speed", - ["A1", "A2", "A3", "B1", "C1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111a_1 = logic_module( - "sky130_fd_sc_ms__o2111a_1", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_2 = logic_module( - "sky130_fd_sc_ms__o2111a_2", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111a_4 = logic_module( - "sky130_fd_sc_ms__o2111a_4", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "X"], -) -o2111ai_1 = logic_module( - "sky130_fd_sc_ms__o2111ai_1", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_2 = logic_module( - "sky130_fd_sc_ms__o2111ai_2", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -o2111ai_4 = logic_module( - "sky130_fd_sc_ms__o2111ai_4", - "Medium Speed", - ["A1", "A2", "B1", "C1", "D1", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -or2_1 = logic_module( - "sky130_fd_sc_ms__or2_1", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_2 = logic_module( - "sky130_fd_sc_ms__or2_2", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2_4 = logic_module( - "sky130_fd_sc_ms__or2_4", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_1 = logic_module( - "sky130_fd_sc_ms__or2b_1", - "Medium Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_2 = logic_module( - "sky130_fd_sc_ms__or2b_2", - "Medium Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or2b_4 = logic_module( - "sky130_fd_sc_ms__or2b_4", - "Medium Speed", - ["A", "B_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_1 = logic_module( - "sky130_fd_sc_ms__or3_1", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_2 = logic_module( - "sky130_fd_sc_ms__or3_2", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3_4 = logic_module( - "sky130_fd_sc_ms__or3_4", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_1 = logic_module( - "sky130_fd_sc_ms__or3b_1", - "Medium Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_2 = logic_module( - "sky130_fd_sc_ms__or3b_2", - "Medium Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or3b_4 = logic_module( - "sky130_fd_sc_ms__or3b_4", - "Medium Speed", - ["A", "B", "C_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_1 = logic_module( - "sky130_fd_sc_ms__or4_1", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_2 = logic_module( - "sky130_fd_sc_ms__or4_2", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4_4 = logic_module( - "sky130_fd_sc_ms__or4_4", - "Medium Speed", - ["A", "B", "C", "D", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_1 = logic_module( - "sky130_fd_sc_ms__or4b_1", - "Medium Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_2 = logic_module( - "sky130_fd_sc_ms__or4b_2", - "Medium Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4b_4 = logic_module( - "sky130_fd_sc_ms__or4b_4", - "Medium Speed", - ["A", "B", "C", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_1 = logic_module( - "sky130_fd_sc_ms__or4bb_1", - "Medium Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_2 = logic_module( - "sky130_fd_sc_ms__or4bb_2", - "Medium Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -or4bb_4 = logic_module( - "sky130_fd_sc_ms__or4bb_4", - "Medium Speed", - ["A", "B", "C_N", "D_N", "VGND", "VNB", "VPB", "VPWR", "X"], -) -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"], -) -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"], -) -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", - ], -) -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"], -) -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"], -) -sdfrtn_1 = logic_module( - "sky130_fd_sc_ms__sdfrtn_1", - "Medium Speed", - ["CLK_N", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_1 = logic_module( - "sky130_fd_sc_ms__sdfrtp_1", - "Medium Speed", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_2 = logic_module( - "sky130_fd_sc_ms__sdfrtp_2", - "Medium Speed", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfrtp_4 = logic_module( - "sky130_fd_sc_ms__sdfrtp_4", - "Medium Speed", - ["CLK", "D", "RESET_B", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -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"], -) -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"], -) -sdfstp_1 = logic_module( - "sky130_fd_sc_ms__sdfstp_1", - "Medium Speed", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_2 = logic_module( - "sky130_fd_sc_ms__sdfstp_2", - "Medium Speed", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfstp_4 = logic_module( - "sky130_fd_sc_ms__sdfstp_4", - "Medium Speed", - ["CLK", "D", "SCD", "SCE", "SET_B", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxbp_1 = logic_module( - "sky130_fd_sc_ms__sdfxbp_1", - "Medium Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxbp_2 = logic_module( - "sky130_fd_sc_ms__sdfxbp_2", - "Medium Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sdfxtp_1 = logic_module( - "sky130_fd_sc_ms__sdfxtp_1", - "Medium Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_2 = logic_module( - "sky130_fd_sc_ms__sdfxtp_2", - "Medium Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdfxtp_4 = logic_module( - "sky130_fd_sc_ms__sdfxtp_4", - "Medium Speed", - ["CLK", "D", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sdlclkp_1 = logic_module( - "sky130_fd_sc_ms__sdlclkp_1", - "Medium Speed", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_2 = logic_module( - "sky130_fd_sc_ms__sdlclkp_2", - "Medium Speed", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sdlclkp_4 = logic_module( - "sky130_fd_sc_ms__sdlclkp_4", - "Medium Speed", - ["CLK", "GATE", "SCE", "VGND", "VNB", "VPB", "VPWR", "GCLK"], -) -sedfxbp_1 = logic_module( - "sky130_fd_sc_ms__sedfxbp_1", - "Medium Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sedfxbp_2 = logic_module( - "sky130_fd_sc_ms__sedfxbp_2", - "Medium Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q", "Q_N"], -) -sedfxtp_1 = logic_module( - "sky130_fd_sc_ms__sedfxtp_1", - "Medium Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sedfxtp_2 = logic_module( - "sky130_fd_sc_ms__sedfxtp_2", - "Medium Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -sedfxtp_4 = logic_module( - "sky130_fd_sc_ms__sedfxtp_4", - "Medium Speed", - ["CLK", "D", "DE", "SCD", "SCE", "VGND", "VNB", "VPB", "VPWR", "Q"], -) -tap_1 = logic_module( - "sky130_fd_sc_ms__tap_1", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -tap_2 = logic_module( - "sky130_fd_sc_ms__tap_2", "Medium Speed", ["VGND", "VNB", "VPB", "VPWR"] -) -tapmet1_2 = logic_module( - "sky130_fd_sc_ms__tapmet1_2", "Medium Speed", ["VGND", "VPB", "VPWR"] -) -tapvgnd2_1 = logic_module( - "sky130_fd_sc_ms__tapvgnd2_1", "Medium Speed", ["VGND", "VPB", "VPWR"] -) -tapvgnd_1 = logic_module( - "sky130_fd_sc_ms__tapvgnd_1", "Medium Speed", ["VGND", "VPB", "VPWR"] -) -tapvpwrvgnd_1 = logic_module( - "sky130_fd_sc_ms__tapvpwrvgnd_1", "Medium Speed", ["VGND", "VPWR"] -) -xnor2_1 = logic_module( - "sky130_fd_sc_ms__xnor2_1", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_2 = logic_module( - "sky130_fd_sc_ms__xnor2_2", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor2_4 = logic_module( - "sky130_fd_sc_ms__xnor2_4", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "Y"], -) -xnor3_1 = logic_module( - "sky130_fd_sc_ms__xnor3_1", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_2 = logic_module( - "sky130_fd_sc_ms__xnor3_2", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xnor3_4 = logic_module( - "sky130_fd_sc_ms__xnor3_4", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_1 = logic_module( - "sky130_fd_sc_ms__xor2_1", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_2 = logic_module( - "sky130_fd_sc_ms__xor2_2", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor2_4 = logic_module( - "sky130_fd_sc_ms__xor2_4", - "Medium Speed", - ["A", "B", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_1 = logic_module( - "sky130_fd_sc_ms__xor3_1", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_2 = logic_module( - "sky130_fd_sc_ms__xor3_2", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) -xor3_4 = logic_module( - "sky130_fd_sc_ms__xor3_4", - "Medium Speed", - ["A", "B", "C", "VGND", "VNB", "VPB", "VPWR", "X"], -) diff --git a/sky130/hdl21/sky130_gf/pdk_data.py b/sky130/hdl21/sky130_gf/pdk_data.py deleted file mode 100644 index 9c00e3dcd..000000000 --- a/sky130/hdl21/sky130_gf/pdk_data.py +++ /dev/null @@ -1,464 +0,0 @@ -# Std-Lib Imports -from copy import deepcopy - -# Hdl21 Imports -import hdl21 as h -from hdl21.prefix import ( - MEGA, - MILLI, - TERA, -) -from hdl21.primitives import ( - Bipolar, - Diode, - MosParams, - PhysicalCapacitor, - PhysicalResistor, - ThreeTerminalCapacitor, - ThreeTerminalResistor, -) - -# Vlsirtool Types to ease downstream parsing -from vlsirtools import SpiceType - -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 - parameters 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 -- Sky130LogicParams - parameters for logic 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 '2*int((nf+1)/2) * (w/nf + 0.29)'. - ps (h.Literal): Source perimeter of the MOSFET. Default is '2*int((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. - """ - - # Pdk units are in µm, throughout - 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.Scalar, - desc="Drain Area", - # `0.29` is diffusion length in µm - # As `nf` increments, drain region quantity is alternatively -1 or == source region quantity - 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.Scalar, - desc="Source Area", - # See above, and note expression `int((nf+2)/2)` is different - default=h.Literal("int((nf+2)/2) * w/nf * 0.29"), - ) - - pd = h.Param( - dtype=h.Scalar, - desc="Drain Perimeter", - # Perimeter of a single diffusion region is 2 * (TotalWidth / Fingers + DiffusionLength) - # Then multiply by total number of diffusion regions that make up drain - default=h.Literal("2*int((nf+1)/2) * (w/nf + 0.29)"), - ) - ps = h.Param( - dtype=h.Scalar, - desc="Source Perimeter", - # Ditto to above, but with respect to source - default=h.Literal("2*int((nf+2)/2) * (w/nf + 0.29)"), - ) - nrd = h.Param( - # Equivalent number of resistive 'squares' of the drain diffusion - # Will be multiplied with sheet resistance to model series resistance of drain - dtype=h.Scalar, - desc="Drain Resistive Value", - default=h.Literal("0.29 / w"), - ) - nrs = h.Param( - # Same idea as above, but with respect to source - dtype=h.Scalar, - desc="Source Resistive Value", - default=h.Literal("0.29 / w"), - ) - sa = h.Param( - dtype=h.Scalar, - desc="Spacing between Adjacent Gate to Drain", - default=0, - ) - sb = h.Param( - dtype=h.Scalar, - desc="Spacing between Adjacent Gate to Source", - default=0, - ) - sd = h.Param( - dtype=h.Scalar, - desc="Spacing between Adjacent Drain to Source", - default=0, - ) - mult = h.Param(dtype=h.Scalar, desc="Multiplier", default=1) - m = h.Param(dtype=h.Scalar, desc="Multiplier", default=1) - - -# NOTE: probably add a deprecation note for this alias; 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 diff --git a/sky130/hdl21/sky130_gf/pdk_logic.py b/sky130/hdl21/sky130_gf/pdk_logic.py deleted file mode 100644 index 7aef058fa..000000000 --- a/sky130/hdl21/sky130_gf/pdk_logic.py +++ /dev/null @@ -1,401 +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 pathlib import Path -from typing import Any, Optional - -# Hdl21 Imports -import hdl21 as h -from hdl21.pdk import PdkInstallation -from hdl21.prefix import MEGA, MILLI, TERA -from hdl21.primitives import ( - Bipolar, - BipolarParams, - Diode, - DiodeParams, - Mos, - MosParams, - PhysicalCapacitor, - PhysicalCapacitorParams, - PhysicalResistor, - PhysicalResistorParams, - ThreeTerminalCapacitor, - ThreeTerminalResistor, -) - -# PyPi Imports -from pydantic.dataclasses import dataclass - -# Import relevant data from the PDK's data module -from .primitives.prim_dicts 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 ngpspice 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: - # 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 whittle 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 - Determines 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: - defaults = Sky130Mos20VParams.default_instance() - modparams = Sky130Mos20VParams(w=w, l=l, m=params.mult or defaults.m) - - else: - defaults = Sky130MosParams.default_instance() - modparams = Sky130MosParams( - w=w, - l=l, - nf=params.nf or defaults.nf, - mult=params.mult or defaults.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: h.Scalar | None, 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 isinstance(orig, h.Prefixed): - return orig # FIXME: where's the scaling? - if isinstance(orig, h.Literal): - return h.Literal(f"({orig.text} * 1e6)") - raise TypeError(f"Param Value {orig}") - - 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/sky130/hdl21/sky130_gf/primitives/__init__.py b/sky130/hdl21/sky130_gf/primitives/__init__.py deleted file mode 100644 index bbc20dbab..000000000 --- a/sky130/hdl21/sky130_gf/primitives/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .primitives import * diff --git a/sky130/hdl21/sky130_gf/primitives/prim_dicts.py b/sky130/hdl21/sky130_gf/primitives/prim_dicts.py deleted file mode 100644 index ebc576f52..000000000 --- a/sky130/hdl21/sky130_gf/primitives/prim_dicts.py +++ /dev/null @@ -1,443 +0,0 @@ -""" -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. -""" - -# Std-Lib Imports -from dataclasses import dataclass, field - -# Local Imports -from hdl21.prefix import µ - -from ..pdk_data import * - -# Individuate component types -MosKey = tuple[str, MosType, MosVth, MosFamily] - - -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 - ), -} - - -@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": (0.420 * µ, 0.150 * µ), - "sky130_fd_pr__nfet_01v8_lvt": ( - 0.420 * µ, - 0.150 * µ, - ), - "sky130_fd_pr__pfet_01v8": (0.550 * µ, 0.150 * µ), - "sky130_fd_pr__pfet_01v8_hvt": ( - 0.550 * µ, - 0.150 * µ, - ), - "sky130_fd_pr__pfet_01v8_lvt": ( - 0.550 * µ, - 0.350 * µ, - ), - "sky130_fd_pr__pfet_g5v0d10v5": ( - 0.420 * µ, - 0.500 * µ, - ), - "sky130_fd_pr__nfet_g5v0d10v5": ( - 0.420 * µ, - 0.500 * µ, - ), - "sky130_fd_pr__pfet_g5v0d16v0": ( - 5.000 * µ, - 0.660 * µ, - ), - "sky130_fd_pr__nfet_20v0": (29.410 * µ, 2.950 * µ), - "sky130_fd_pr__nfet_20v0_zvt": ( - 30.000 * µ, - 1.500 * µ, - ), - "sky130_fd_pr__nfet_20v0_iso": ( - 30.000 * µ, - 1.500 * µ, - ), - "sky130_fd_pr__pfet_20v0": (30.000 * µ, 1.000 * µ), - "sky130_fd_pr__nfet_03v3_nvt": ( - 0.700 * µ, - 0.500 * µ, - ), - "sky130_fd_pr__nfet_05v0_nvt": ( - 0.700 * µ, - 0.900 * µ, - ), - "sky130_fd_pr__nfet_20v0_nvt": ( - 30.000 * µ, - 1.000 * µ, - ), - "sky130_fd_pr__esd_nfet_01v8": ( - 20.350 * µ, - 0.165 * µ, - ), - "sky130_fd_pr__esd_nfet_g5v0d10v5": ( - 14.500 * µ, - 0.550 * µ, - ), - "sky130_fd_pr__esd_nfet_g5v0d10v5_nvt": ( - 10.000 * µ, - 0.900 * µ, - ), - "sky130_fd_pr__esd_pfet_g5v0d10v5": ( - 14.500 * µ, - 0.550 * µ, - ), -} - -default_gen_res_size = { - "sky130_fd_pr__res_generic_po": ( - 0.720 * µ, - 0.290 * µ, - ), - "sky130_fd_pr__res_generic_l1": ( - 0.720 * µ, - 0.290 * µ, - ), - "sky130_fd_pr__res_generic_m1": ( - 0.720 * µ, - 0.290 * µ, - ), - "sky130_fd_pr__res_generic_m2": ( - 0.720 * µ, - 0.290 * µ, - ), - "sky130_fd_pr__res_generic_m3": ( - 0.720 * µ, - 0.290 * µ, - ), - "sky130_fd_pr__res_generic_m4": ( - 0.720 * µ, - 0.290 * µ, - ), - "sky130_fd_pr__res_generic_m5": ( - 0.720 * µ, - 0.290 * µ, - ), - "sky130_fd_pr__res_generic_nd": ( - 0.150 * µ, - 0.270 * µ, - ), - "sky130_fd_pr__res_generic_pd": ( - 0.150 * µ, - 0.270 * µ, - ), - # FIXME: This value is lifted from xschem but can't be found in documentation - "sky130_fd_pr__res_iso_pw": (2.650 * µ, 2.650 * µ), -} - -# These have to be left in microns for parsing reasons -default_prec_res_L = { - "sky130_fd_pr__res_high_po_0p35": 0.350, - "sky130_fd_pr__res_high_po_0p69": 0.690, - "sky130_fd_pr__res_high_po_1p41": 1.410, - "sky130_fd_pr__res_high_po_2p85": 2.850, - "sky130_fd_pr__res_high_po_5p73": 5.300, - "sky130_fd_pr__res_xhigh_po_0p35": 0.350, - "sky130_fd_pr__res_xhigh_po_0p69": 0.690, - "sky130_fd_pr__res_xhigh_po_1p41": 1.410, - "sky130_fd_pr__res_xhigh_po_2p85": 2.850, - "sky130_fd_pr__res_xhigh_po_5p73": 5.300, -} - -default_cap_sizes = { - # FIXME: Using documentation minimum sizing not sure of correct answer - "sky130_fd_pr__cap_mim_m3_1": ( - 2.000 * µ, - 2.000 * µ, - ), - "sky130_fd_pr__cap_mim_m3_2": ( - 2.000 * µ, - 2.000 * µ, - ), - "sky130_fd_pr__cap_var_lvt": (0.180 * µ, 0.180 * µ), - "sky130_fd_pr__cap_var_hvt": (0.180 * µ, 0.180 * µ), -} diff --git a/sky130/hdl21/sky130_gf/primitives/primitives.py b/sky130/hdl21/sky130_gf/primitives/primitives.py deleted file mode 100644 index bcfb4b90f..000000000 --- a/sky130/hdl21/sky130_gf/primitives/primitives.py +++ /dev/null @@ -1,187 +0,0 @@ -""" -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. -""" - -from ..pdk_data import * - -NMOS_1p8V_STD = xtor_module("sky130_fd_pr__nfet_01v8") -NMOS_1p8V_LOW = xtor_module("sky130_fd_pr__nfet_01v8_lvt") -PMOS_1p8V_STD = xtor_module("sky130_fd_pr__pfet_01v8") -PMOS_1p8V_HIGH = xtor_module("sky130_fd_pr__pfet_01v8_hvt") -PMOS_1p8V_LOW = xtor_module("sky130_fd_pr__pfet_01v8_lvt") -PMOS_5p5V_D10_STD = xtor_module("sky130_fd_pr__pfet_g5v0d10v5") -NMOS_5p5V_D10_STD = xtor_module("sky130_fd_pr__nfet_g5v0d10v5") -PMOS_5p5V_D16_STD = xtor_module("sky130_fd_pr__pfet_g5v0d16v0") -NMOS_20p0V_STD = xtor_module("sky130_fd_pr__nfet_20v0", params=Sky130Mos20VParams) -NMOS_20p0V_LOW = xtor_module("sky130_fd_pr__nfet_20v0_zvt", params=Sky130Mos20VParams) -NMOS_ISO_20p0V = xtor_module( - "sky130_fd_pr__nfet_20v0_iso", params=Sky130Mos20VParams, num_terminals=5 -) -PMOS_20p0V = xtor_module("sky130_fd_pr__pfet_20v0", params=Sky130Mos20VParams) -# Note there are no NMOS HVT! -# Add Native FET entries -NMOS_3p3V_NAT = xtor_module("sky130_fd_pr__nfet_03v3_nvt") -NMOS_5p0V_NAT = xtor_module("sky130_fd_pr__nfet_05v0_nvt") -NMOS_20p0V_NAT = xtor_module("sky130_fd_pr__nfet_20v0_nvt", params=Sky130Mos20VParams) -# Add ESD FET entries -ESD_NMOS_1p8V = xtor_module("sky130_fd_pr__esd_nfet_01v8") -ESD_NMOS_5p5V_D10 = xtor_module("sky130_fd_pr__esd_nfet_g5v0d10v5") -ESD_NMOS_5p5V_NAT = xtor_module("sky130_fd_pr__esd_nfet_g5v0d10v5_nvt") -ESD_PMOS_5p5V = xtor_module("sky130_fd_pr__esd_pfet_g5v0d10v5") - -# 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) - -# 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 -""" -# 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") - -# 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, -) - -# 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 -) diff --git a/sky130/hdl21/sky130_gf/test_netlists.py b/sky130/hdl21/sky130_gf/test_netlists.py deleted file mode 100644 index 2567d67f0..000000000 --- a/sky130/hdl21/sky130_gf/test_netlists.py +++ /dev/null @@ -1,259 +0,0 @@ -""" -This series of tests is made by painstakingly 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 -import sky130_hdl21 -from hdl21.prefix import µ - -from . import pdk_logic as 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_hdl21.Sky130BipolarParams() - - @h.module - class Bipolar1: - w, x, y, z = 4 * h.Signal() - genBipolar = sky130_hdl21.primitives.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_hdl21.primitives.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/sky130/hdl21/sky130_gf/test_pdk.py b/sky130/hdl21/sky130_gf/test_pdk.py deleted file mode 100644 index 21e339747..000000000 --- a/sky130/hdl21/sky130_gf/test_pdk.py +++ /dev/null @@ -1,393 +0,0 @@ -""" -# SkyWater 130nm OSS PDK Plug-In - -Unit Tests -""" - -from io import StringIO - -import hdl21 as h -import sky130_hdl21.primitives as s -from hdl21.primitives import * - -from . import pdk_logic as sky130 - - -def test_default(): - h.pdk.set_default(sky130) - assert h.pdk.default() is sky130 - - -def mos_primitives_module(): - sky130.Sky130MosParams() - - @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 != "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(): - _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): - # 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(): - _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_mos_module(): - p = sky130.Sky130MosParams() - q = sky130.Sky130Mos20VParams() - - @h.module - class HasXtors: - 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(): - from hdl21.tests.content import walker_test_content - - content = walker_test_content() - sky130.compile(content) diff --git a/sky130/hdl21/sky130_gf/test_site_sims.py b/sky130/hdl21/sky130_gf/test_site_sims.py deleted file mode 100644 index 08f0dbc39..000000000 --- a/sky130/hdl21/sky130_gf/test_site_sims.py +++ /dev/null @@ -1,657 +0,0 @@ -""" -# 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 hdl21 as h -import sky130_hdl21 as sky130 -import sky130_hdl21.primitives as s -import vlsirtools.spice as vsp - - -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.primitives.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.primitives.NMOS_1p8V_STD()(d=o, g=i, s=VSS, b=VSS) - p = sky130.primitives.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) diff --git a/sky130/spice_models.py b/sky130/spice_models.py deleted file mode 100644 index 18da20e8a..000000000 --- a/sky130/spice_models.py +++ /dev/null @@ -1,1083 +0,0 @@ -"""FIXME. - -https://github.com/chipsalliance/silicon-notebooks/blob/main/analog-inverter-magic.ipynb -""" -from functools import partial - -import matplotlib.pyplot as plt -from PySpice.Spice.Netlist import Circuit -from PySpice.Unit import u_ns, u_ps, u_V - -from sky130.config import PATH - - -def import_spice(name: str) -> Circuit: - """Returns a Spice circuit model from a component name. - - FIXME! - """ - fields = name.split("_") - library_name = "_".join(fields[0:4]) - library_path = PATH.spice / f"{library_name}.spice" - circuit = Circuit(name) - circuit.lib(library_path, name) - # circuit.include('mosfet.spice') - return circuit - - -sky130_fd_sc_hd__a2111o_1 = partial(import_spice, "sky130_fd_sc_hd__a2111o_1") -sky130_fd_sc_hd__a2111o_2 = partial(import_spice, "sky130_fd_sc_hd__a2111o_2") -sky130_fd_sc_hd__a2111o_4 = partial(import_spice, "sky130_fd_sc_hd__a2111o_4") -sky130_fd_sc_hd__a2111oi_0 = partial(import_spice, "sky130_fd_sc_hd__a2111oi_0") -sky130_fd_sc_hd__a2111oi_1 = partial(import_spice, "sky130_fd_sc_hd__a2111oi_1") -sky130_fd_sc_hd__a2111oi_2 = partial(import_spice, "sky130_fd_sc_hd__a2111oi_2") -sky130_fd_sc_hd__a2111oi_4 = partial(import_spice, "sky130_fd_sc_hd__a2111oi_4") -sky130_fd_sc_hd__a211o_1 = partial(import_spice, "sky130_fd_sc_hd__a211o_1") -sky130_fd_sc_hd__a211o_2 = partial(import_spice, "sky130_fd_sc_hd__a211o_2") -sky130_fd_sc_hd__a211o_4 = partial(import_spice, "sky130_fd_sc_hd__a211o_4") -sky130_fd_sc_hd__a211oi_1 = partial(import_spice, "sky130_fd_sc_hd__a211oi_1") -sky130_fd_sc_hd__a211oi_2 = partial(import_spice, "sky130_fd_sc_hd__a211oi_2") -sky130_fd_sc_hd__a211oi_4 = partial(import_spice, "sky130_fd_sc_hd__a211oi_4") -sky130_fd_sc_hd__a21bo_1 = partial(import_spice, "sky130_fd_sc_hd__a21bo_1") -sky130_fd_sc_hd__a21bo_2 = partial(import_spice, "sky130_fd_sc_hd__a21bo_2") -sky130_fd_sc_hd__a21bo_4 = partial(import_spice, "sky130_fd_sc_hd__a21bo_4") -sky130_fd_sc_hd__a21boi_0 = partial(import_spice, "sky130_fd_sc_hd__a21boi_0") -sky130_fd_sc_hd__a21boi_1 = partial(import_spice, "sky130_fd_sc_hd__a21boi_1") -sky130_fd_sc_hd__a21boi_2 = partial(import_spice, "sky130_fd_sc_hd__a21boi_2") -sky130_fd_sc_hd__a21boi_4 = partial(import_spice, "sky130_fd_sc_hd__a21boi_4") -sky130_fd_sc_hd__a21o_1 = partial(import_spice, "sky130_fd_sc_hd__a21o_1") -sky130_fd_sc_hd__a21o_2 = partial(import_spice, "sky130_fd_sc_hd__a21o_2") -sky130_fd_sc_hd__a21o_4 = partial(import_spice, "sky130_fd_sc_hd__a21o_4") -sky130_fd_sc_hd__a21oi_1 = partial(import_spice, "sky130_fd_sc_hd__a21oi_1") -sky130_fd_sc_hd__a21oi_2 = partial(import_spice, "sky130_fd_sc_hd__a21oi_2") -sky130_fd_sc_hd__a21oi_4 = partial(import_spice, "sky130_fd_sc_hd__a21oi_4") -sky130_fd_sc_hd__a221o_1 = partial(import_spice, "sky130_fd_sc_hd__a221o_1") -sky130_fd_sc_hd__a221o_2 = partial(import_spice, "sky130_fd_sc_hd__a221o_2") -sky130_fd_sc_hd__a221o_4 = partial(import_spice, "sky130_fd_sc_hd__a221o_4") -sky130_fd_sc_hd__a221oi_1 = partial(import_spice, "sky130_fd_sc_hd__a221oi_1") -sky130_fd_sc_hd__a221oi_2 = partial(import_spice, "sky130_fd_sc_hd__a221oi_2") -sky130_fd_sc_hd__a221oi_4 = partial(import_spice, "sky130_fd_sc_hd__a221oi_4") -sky130_fd_sc_hd__a222oi_1 = partial(import_spice, "sky130_fd_sc_hd__a222oi_1") -sky130_fd_sc_hd__a22o_1 = partial(import_spice, "sky130_fd_sc_hd__a22o_1") -sky130_fd_sc_hd__a22o_2 = partial(import_spice, "sky130_fd_sc_hd__a22o_2") -sky130_fd_sc_hd__a22o_4 = partial(import_spice, "sky130_fd_sc_hd__a22o_4") -sky130_fd_sc_hd__a22oi_1 = partial(import_spice, "sky130_fd_sc_hd__a22oi_1") -sky130_fd_sc_hd__a22oi_2 = partial(import_spice, "sky130_fd_sc_hd__a22oi_2") -sky130_fd_sc_hd__a22oi_4 = partial(import_spice, "sky130_fd_sc_hd__a22oi_4") -sky130_fd_sc_hd__a2bb2o_1 = partial(import_spice, "sky130_fd_sc_hd__a2bb2o_1") -sky130_fd_sc_hd__a2bb2o_2 = partial(import_spice, "sky130_fd_sc_hd__a2bb2o_2") -sky130_fd_sc_hd__a2bb2o_4 = partial(import_spice, "sky130_fd_sc_hd__a2bb2o_4") -sky130_fd_sc_hd__a2bb2oi_1 = partial(import_spice, "sky130_fd_sc_hd__a2bb2oi_1") -sky130_fd_sc_hd__a2bb2oi_2 = partial(import_spice, "sky130_fd_sc_hd__a2bb2oi_2") -sky130_fd_sc_hd__a2bb2oi_4 = partial(import_spice, "sky130_fd_sc_hd__a2bb2oi_4") -sky130_fd_sc_hd__a311o_1 = partial(import_spice, "sky130_fd_sc_hd__a311o_1") -sky130_fd_sc_hd__a311o_2 = partial(import_spice, "sky130_fd_sc_hd__a311o_2") -sky130_fd_sc_hd__a311o_4 = partial(import_spice, "sky130_fd_sc_hd__a311o_4") -sky130_fd_sc_hd__a311oi_1 = partial(import_spice, "sky130_fd_sc_hd__a311oi_1") -sky130_fd_sc_hd__a311oi_2 = partial(import_spice, "sky130_fd_sc_hd__a311oi_2") -sky130_fd_sc_hd__a311oi_4 = partial(import_spice, "sky130_fd_sc_hd__a311oi_4") -sky130_fd_sc_hd__a31o_1 = partial(import_spice, "sky130_fd_sc_hd__a31o_1") -sky130_fd_sc_hd__a31o_2 = partial(import_spice, "sky130_fd_sc_hd__a31o_2") -sky130_fd_sc_hd__a31o_4 = partial(import_spice, "sky130_fd_sc_hd__a31o_4") -sky130_fd_sc_hd__a31oi_1 = partial(import_spice, "sky130_fd_sc_hd__a31oi_1") -sky130_fd_sc_hd__a31oi_2 = partial(import_spice, "sky130_fd_sc_hd__a31oi_2") -sky130_fd_sc_hd__a31oi_4 = partial(import_spice, "sky130_fd_sc_hd__a31oi_4") -sky130_fd_sc_hd__a32o_1 = partial(import_spice, "sky130_fd_sc_hd__a32o_1") -sky130_fd_sc_hd__a32o_2 = partial(import_spice, "sky130_fd_sc_hd__a32o_2") -sky130_fd_sc_hd__a32o_4 = partial(import_spice, "sky130_fd_sc_hd__a32o_4") -sky130_fd_sc_hd__a32oi_1 = partial(import_spice, "sky130_fd_sc_hd__a32oi_1") -sky130_fd_sc_hd__a32oi_2 = partial(import_spice, "sky130_fd_sc_hd__a32oi_2") -sky130_fd_sc_hd__a32oi_4 = partial(import_spice, "sky130_fd_sc_hd__a32oi_4") -sky130_fd_sc_hd__a41o_1 = partial(import_spice, "sky130_fd_sc_hd__a41o_1") -sky130_fd_sc_hd__a41o_2 = partial(import_spice, "sky130_fd_sc_hd__a41o_2") -sky130_fd_sc_hd__a41o_4 = partial(import_spice, "sky130_fd_sc_hd__a41o_4") -sky130_fd_sc_hd__a41oi_1 = partial(import_spice, "sky130_fd_sc_hd__a41oi_1") -sky130_fd_sc_hd__a41oi_2 = partial(import_spice, "sky130_fd_sc_hd__a41oi_2") -sky130_fd_sc_hd__a41oi_4 = partial(import_spice, "sky130_fd_sc_hd__a41oi_4") -sky130_fd_sc_hd__and2_0 = partial(import_spice, "sky130_fd_sc_hd__and2_0") -sky130_fd_sc_hd__and2_1 = partial(import_spice, "sky130_fd_sc_hd__and2_1") -sky130_fd_sc_hd__and2_2 = partial(import_spice, "sky130_fd_sc_hd__and2_2") -sky130_fd_sc_hd__and2_4 = partial(import_spice, "sky130_fd_sc_hd__and2_4") -sky130_fd_sc_hd__and2b_1 = partial(import_spice, "sky130_fd_sc_hd__and2b_1") -sky130_fd_sc_hd__and2b_2 = partial(import_spice, "sky130_fd_sc_hd__and2b_2") -sky130_fd_sc_hd__and2b_4 = partial(import_spice, "sky130_fd_sc_hd__and2b_4") -sky130_fd_sc_hd__and3_1 = partial(import_spice, "sky130_fd_sc_hd__and3_1") -sky130_fd_sc_hd__and3_2 = partial(import_spice, "sky130_fd_sc_hd__and3_2") -sky130_fd_sc_hd__and3_4 = partial(import_spice, "sky130_fd_sc_hd__and3_4") -sky130_fd_sc_hd__and3b_1 = partial(import_spice, "sky130_fd_sc_hd__and3b_1") -sky130_fd_sc_hd__and3b_2 = partial(import_spice, "sky130_fd_sc_hd__and3b_2") -sky130_fd_sc_hd__and3b_4 = partial(import_spice, "sky130_fd_sc_hd__and3b_4") -sky130_fd_sc_hd__and4_1 = partial(import_spice, "sky130_fd_sc_hd__and4_1") -sky130_fd_sc_hd__and4_2 = partial(import_spice, "sky130_fd_sc_hd__and4_2") -sky130_fd_sc_hd__and4_4 = partial(import_spice, "sky130_fd_sc_hd__and4_4") -sky130_fd_sc_hd__and4b_1 = partial(import_spice, "sky130_fd_sc_hd__and4b_1") -sky130_fd_sc_hd__and4b_2 = partial(import_spice, "sky130_fd_sc_hd__and4b_2") -sky130_fd_sc_hd__and4b_4 = partial(import_spice, "sky130_fd_sc_hd__and4b_4") -sky130_fd_sc_hd__and4bb_1 = partial(import_spice, "sky130_fd_sc_hd__and4bb_1") -sky130_fd_sc_hd__and4bb_2 = partial(import_spice, "sky130_fd_sc_hd__and4bb_2") -sky130_fd_sc_hd__and4bb_4 = partial(import_spice, "sky130_fd_sc_hd__and4bb_4") -sky130_fd_sc_hd__buf_1 = partial(import_spice, "sky130_fd_sc_hd__buf_1") -sky130_fd_sc_hd__buf_12 = partial(import_spice, "sky130_fd_sc_hd__buf_12") -sky130_fd_sc_hd__buf_16 = partial(import_spice, "sky130_fd_sc_hd__buf_16") -sky130_fd_sc_hd__buf_2 = partial(import_spice, "sky130_fd_sc_hd__buf_2") -sky130_fd_sc_hd__buf_4 = partial(import_spice, "sky130_fd_sc_hd__buf_4") -sky130_fd_sc_hd__buf_6 = partial(import_spice, "sky130_fd_sc_hd__buf_6") -sky130_fd_sc_hd__buf_8 = partial(import_spice, "sky130_fd_sc_hd__buf_8") -sky130_fd_sc_hd__bufbuf_16 = partial(import_spice, "sky130_fd_sc_hd__bufbuf_16") -sky130_fd_sc_hd__bufbuf_8 = partial(import_spice, "sky130_fd_sc_hd__bufbuf_8") -sky130_fd_sc_hd__bufinv_16 = partial(import_spice, "sky130_fd_sc_hd__bufinv_16") -sky130_fd_sc_hd__bufinv_8 = partial(import_spice, "sky130_fd_sc_hd__bufinv_8") -sky130_fd_sc_hd__clkbuf_1 = partial(import_spice, "sky130_fd_sc_hd__clkbuf_1") -sky130_fd_sc_hd__clkbuf_16 = partial(import_spice, "sky130_fd_sc_hd__clkbuf_16") -sky130_fd_sc_hd__clkbuf_2 = partial(import_spice, "sky130_fd_sc_hd__clkbuf_2") -sky130_fd_sc_hd__clkbuf_4 = partial(import_spice, "sky130_fd_sc_hd__clkbuf_4") -sky130_fd_sc_hd__clkbuf_8 = partial(import_spice, "sky130_fd_sc_hd__clkbuf_8") -sky130_fd_sc_hd__clkdlybuf4s15_1 = partial( - import_spice, "sky130_fd_sc_hd__clkdlybuf4s15_1" -) -sky130_fd_sc_hd__clkdlybuf4s15_2 = partial( - import_spice, "sky130_fd_sc_hd__clkdlybuf4s15_2" -) -sky130_fd_sc_hd__clkdlybuf4s18_1 = partial( - import_spice, "sky130_fd_sc_hd__clkdlybuf4s18_1" -) -sky130_fd_sc_hd__clkdlybuf4s18_2 = partial( - import_spice, "sky130_fd_sc_hd__clkdlybuf4s18_2" -) -sky130_fd_sc_hd__clkdlybuf4s25_1 = partial( - import_spice, "sky130_fd_sc_hd__clkdlybuf4s25_1" -) -sky130_fd_sc_hd__clkdlybuf4s25_2 = partial( - import_spice, "sky130_fd_sc_hd__clkdlybuf4s25_2" -) -sky130_fd_sc_hd__clkdlybuf4s50_1 = partial( - import_spice, "sky130_fd_sc_hd__clkdlybuf4s50_1" -) -sky130_fd_sc_hd__clkdlybuf4s50_2 = partial( - import_spice, "sky130_fd_sc_hd__clkdlybuf4s50_2" -) -sky130_fd_sc_hd__clkinv_1 = partial(import_spice, "sky130_fd_sc_hd__clkinv_1") -sky130_fd_sc_hd__clkinv_16 = partial(import_spice, "sky130_fd_sc_hd__clkinv_16") -sky130_fd_sc_hd__clkinv_2 = partial(import_spice, "sky130_fd_sc_hd__clkinv_2") -sky130_fd_sc_hd__clkinv_4 = partial(import_spice, "sky130_fd_sc_hd__clkinv_4") -sky130_fd_sc_hd__clkinv_8 = partial(import_spice, "sky130_fd_sc_hd__clkinv_8") -sky130_fd_sc_hd__clkinvlp_2 = partial(import_spice, "sky130_fd_sc_hd__clkinvlp_2") -sky130_fd_sc_hd__clkinvlp_4 = partial(import_spice, "sky130_fd_sc_hd__clkinvlp_4") -sky130_fd_sc_hd__conb_1 = partial(import_spice, "sky130_fd_sc_hd__conb_1") -sky130_fd_sc_hd__decap_12 = partial(import_spice, "sky130_fd_sc_hd__decap_12") -sky130_fd_sc_hd__decap_3 = partial(import_spice, "sky130_fd_sc_hd__decap_3") -sky130_fd_sc_hd__decap_4 = partial(import_spice, "sky130_fd_sc_hd__decap_4") -sky130_fd_sc_hd__decap_6 = partial(import_spice, "sky130_fd_sc_hd__decap_6") -sky130_fd_sc_hd__decap_8 = partial(import_spice, "sky130_fd_sc_hd__decap_8") -sky130_fd_sc_hd__dfbbn_1 = partial(import_spice, "sky130_fd_sc_hd__dfbbn_1") -sky130_fd_sc_hd__dfbbn_2 = partial(import_spice, "sky130_fd_sc_hd__dfbbn_2") -sky130_fd_sc_hd__dfbbp_1 = partial(import_spice, "sky130_fd_sc_hd__dfbbp_1") -sky130_fd_sc_hd__dfrbp_1 = partial(import_spice, "sky130_fd_sc_hd__dfrbp_1") -sky130_fd_sc_hd__dfrbp_2 = partial(import_spice, "sky130_fd_sc_hd__dfrbp_2") -sky130_fd_sc_hd__dfrtn_1 = partial(import_spice, "sky130_fd_sc_hd__dfrtn_1") -sky130_fd_sc_hd__dfrtp_1 = partial(import_spice, "sky130_fd_sc_hd__dfrtp_1") -sky130_fd_sc_hd__dfrtp_2 = partial(import_spice, "sky130_fd_sc_hd__dfrtp_2") -sky130_fd_sc_hd__dfrtp_4 = partial(import_spice, "sky130_fd_sc_hd__dfrtp_4") -sky130_fd_sc_hd__dfsbp_1 = partial(import_spice, "sky130_fd_sc_hd__dfsbp_1") -sky130_fd_sc_hd__dfsbp_2 = partial(import_spice, "sky130_fd_sc_hd__dfsbp_2") -sky130_fd_sc_hd__dfstp_1 = partial(import_spice, "sky130_fd_sc_hd__dfstp_1") -sky130_fd_sc_hd__dfstp_2 = partial(import_spice, "sky130_fd_sc_hd__dfstp_2") -sky130_fd_sc_hd__dfstp_4 = partial(import_spice, "sky130_fd_sc_hd__dfstp_4") -sky130_fd_sc_hd__dfxbp_1 = partial(import_spice, "sky130_fd_sc_hd__dfxbp_1") -sky130_fd_sc_hd__dfxbp_2 = partial(import_spice, "sky130_fd_sc_hd__dfxbp_2") -sky130_fd_sc_hd__dfxtp_1 = partial(import_spice, "sky130_fd_sc_hd__dfxtp_1") -sky130_fd_sc_hd__dfxtp_2 = partial(import_spice, "sky130_fd_sc_hd__dfxtp_2") -sky130_fd_sc_hd__dfxtp_4 = partial(import_spice, "sky130_fd_sc_hd__dfxtp_4") -sky130_fd_sc_hd__diode_2 = partial(import_spice, "sky130_fd_sc_hd__diode_2") -sky130_fd_sc_hd__dlclkp_1 = partial(import_spice, "sky130_fd_sc_hd__dlclkp_1") -sky130_fd_sc_hd__dlclkp_2 = partial(import_spice, "sky130_fd_sc_hd__dlclkp_2") -sky130_fd_sc_hd__dlclkp_4 = partial(import_spice, "sky130_fd_sc_hd__dlclkp_4") -sky130_fd_sc_hd__dlrbn_1 = partial(import_spice, "sky130_fd_sc_hd__dlrbn_1") -sky130_fd_sc_hd__dlrbn_2 = partial(import_spice, "sky130_fd_sc_hd__dlrbn_2") -sky130_fd_sc_hd__dlrbp_1 = partial(import_spice, "sky130_fd_sc_hd__dlrbp_1") -sky130_fd_sc_hd__dlrbp_2 = partial(import_spice, "sky130_fd_sc_hd__dlrbp_2") -sky130_fd_sc_hd__dlrtn_1 = partial(import_spice, "sky130_fd_sc_hd__dlrtn_1") -sky130_fd_sc_hd__dlrtn_2 = partial(import_spice, "sky130_fd_sc_hd__dlrtn_2") -sky130_fd_sc_hd__dlrtn_4 = partial(import_spice, "sky130_fd_sc_hd__dlrtn_4") -sky130_fd_sc_hd__dlrtp_1 = partial(import_spice, "sky130_fd_sc_hd__dlrtp_1") -sky130_fd_sc_hd__dlrtp_2 = partial(import_spice, "sky130_fd_sc_hd__dlrtp_2") -sky130_fd_sc_hd__dlrtp_4 = partial(import_spice, "sky130_fd_sc_hd__dlrtp_4") -sky130_fd_sc_hd__dlxbn_1 = partial(import_spice, "sky130_fd_sc_hd__dlxbn_1") -sky130_fd_sc_hd__dlxbn_2 = partial(import_spice, "sky130_fd_sc_hd__dlxbn_2") -sky130_fd_sc_hd__dlxbp_1 = partial(import_spice, "sky130_fd_sc_hd__dlxbp_1") -sky130_fd_sc_hd__dlxtn_1 = partial(import_spice, "sky130_fd_sc_hd__dlxtn_1") -sky130_fd_sc_hd__dlxtn_2 = partial(import_spice, "sky130_fd_sc_hd__dlxtn_2") -sky130_fd_sc_hd__dlxtn_4 = partial(import_spice, "sky130_fd_sc_hd__dlxtn_4") -sky130_fd_sc_hd__dlxtp_1 = partial(import_spice, "sky130_fd_sc_hd__dlxtp_1") -sky130_fd_sc_hd__dlygate4sd1_1 = partial(import_spice, "sky130_fd_sc_hd__dlygate4sd1_1") -sky130_fd_sc_hd__dlygate4sd2_1 = partial(import_spice, "sky130_fd_sc_hd__dlygate4sd2_1") -sky130_fd_sc_hd__dlygate4sd3_1 = partial(import_spice, "sky130_fd_sc_hd__dlygate4sd3_1") -sky130_fd_sc_hd__dlymetal6s2s_1 = partial( - import_spice, "sky130_fd_sc_hd__dlymetal6s2s_1" -) -sky130_fd_sc_hd__dlymetal6s4s_1 = partial( - import_spice, "sky130_fd_sc_hd__dlymetal6s4s_1" -) -sky130_fd_sc_hd__dlymetal6s6s_1 = partial( - import_spice, "sky130_fd_sc_hd__dlymetal6s6s_1" -) -sky130_fd_sc_hd__ebufn_1 = partial(import_spice, "sky130_fd_sc_hd__ebufn_1") -sky130_fd_sc_hd__ebufn_2 = partial(import_spice, "sky130_fd_sc_hd__ebufn_2") -sky130_fd_sc_hd__ebufn_4 = partial(import_spice, "sky130_fd_sc_hd__ebufn_4") -sky130_fd_sc_hd__ebufn_8 = partial(import_spice, "sky130_fd_sc_hd__ebufn_8") -sky130_fd_sc_hd__edfxbp_1 = partial(import_spice, "sky130_fd_sc_hd__edfxbp_1") -sky130_fd_sc_hd__edfxtp_1 = partial(import_spice, "sky130_fd_sc_hd__edfxtp_1") -sky130_fd_sc_hd__einvn_0 = partial(import_spice, "sky130_fd_sc_hd__einvn_0") -sky130_fd_sc_hd__einvn_1 = partial(import_spice, "sky130_fd_sc_hd__einvn_1") -sky130_fd_sc_hd__einvn_2 = partial(import_spice, "sky130_fd_sc_hd__einvn_2") -sky130_fd_sc_hd__einvn_4 = partial(import_spice, "sky130_fd_sc_hd__einvn_4") -sky130_fd_sc_hd__einvn_8 = partial(import_spice, "sky130_fd_sc_hd__einvn_8") -sky130_fd_sc_hd__einvp_1 = partial(import_spice, "sky130_fd_sc_hd__einvp_1") -sky130_fd_sc_hd__einvp_2 = partial(import_spice, "sky130_fd_sc_hd__einvp_2") -sky130_fd_sc_hd__einvp_4 = partial(import_spice, "sky130_fd_sc_hd__einvp_4") -sky130_fd_sc_hd__einvp_8 = partial(import_spice, "sky130_fd_sc_hd__einvp_8") -sky130_fd_sc_hd__fa_1 = partial(import_spice, "sky130_fd_sc_hd__fa_1") -sky130_fd_sc_hd__fa_2 = partial(import_spice, "sky130_fd_sc_hd__fa_2") -sky130_fd_sc_hd__fa_4 = partial(import_spice, "sky130_fd_sc_hd__fa_4") -sky130_fd_sc_hd__fah_1 = partial(import_spice, "sky130_fd_sc_hd__fah_1") -sky130_fd_sc_hd__fahcin_1 = partial(import_spice, "sky130_fd_sc_hd__fahcin_1") -sky130_fd_sc_hd__fahcon_1 = partial(import_spice, "sky130_fd_sc_hd__fahcon_1") -sky130_fd_sc_hd__fill_1 = partial(import_spice, "sky130_fd_sc_hd__fill_1") -sky130_fd_sc_hd__fill_2 = partial(import_spice, "sky130_fd_sc_hd__fill_2") -sky130_fd_sc_hd__fill_4 = partial(import_spice, "sky130_fd_sc_hd__fill_4") -sky130_fd_sc_hd__fill_8 = partial(import_spice, "sky130_fd_sc_hd__fill_8") -sky130_fd_sc_hd__ha_1 = partial(import_spice, "sky130_fd_sc_hd__ha_1") -sky130_fd_sc_hd__ha_2 = partial(import_spice, "sky130_fd_sc_hd__ha_2") -sky130_fd_sc_hd__ha_4 = partial(import_spice, "sky130_fd_sc_hd__ha_4") -sky130_fd_sc_hd__inv_1 = partial(import_spice, "sky130_fd_sc_hd__inv_1") -sky130_fd_sc_hd__inv_12 = partial(import_spice, "sky130_fd_sc_hd__inv_12") -sky130_fd_sc_hd__inv_16 = partial(import_spice, "sky130_fd_sc_hd__inv_16") -sky130_fd_sc_hd__inv_2 = partial(import_spice, "sky130_fd_sc_hd__inv_2") -sky130_fd_sc_hd__inv_4 = partial(import_spice, "sky130_fd_sc_hd__inv_4") -sky130_fd_sc_hd__inv_6 = partial(import_spice, "sky130_fd_sc_hd__inv_6") -sky130_fd_sc_hd__inv_8 = partial(import_spice, "sky130_fd_sc_hd__inv_8") -sky130_fd_sc_hd__lpflow_bleeder_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_bleeder_1" -) -sky130_fd_sc_hd__lpflow_clkbufkapwr_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_clkbufkapwr_1" -) -sky130_fd_sc_hd__lpflow_clkbufkapwr_16 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_clkbufkapwr_16" -) -sky130_fd_sc_hd__lpflow_clkbufkapwr_2 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_clkbufkapwr_2" -) -sky130_fd_sc_hd__lpflow_clkbufkapwr_4 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_clkbufkapwr_4" -) -sky130_fd_sc_hd__lpflow_clkbufkapwr_8 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_clkbufkapwr_8" -) -sky130_fd_sc_hd__lpflow_clkinvkapwr_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_clkinvkapwr_1" -) -sky130_fd_sc_hd__lpflow_clkinvkapwr_16 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_clkinvkapwr_16" -) -sky130_fd_sc_hd__lpflow_clkinvkapwr_2 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_clkinvkapwr_2" -) -sky130_fd_sc_hd__lpflow_clkinvkapwr_4 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_clkinvkapwr_4" -) -sky130_fd_sc_hd__lpflow_clkinvkapwr_8 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_clkinvkapwr_8" -) -sky130_fd_sc_hd__lpflow_decapkapwr_12 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_decapkapwr_12" -) -sky130_fd_sc_hd__lpflow_decapkapwr_3 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_decapkapwr_3" -) -sky130_fd_sc_hd__lpflow_decapkapwr_4 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_decapkapwr_4" -) -sky130_fd_sc_hd__lpflow_decapkapwr_6 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_decapkapwr_6" -) -sky130_fd_sc_hd__lpflow_decapkapwr_8 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_decapkapwr_8" -) -sky130_fd_sc_hd__lpflow_inputiso0n_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_inputiso0n_1" -) -sky130_fd_sc_hd__lpflow_inputiso0p_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_inputiso0p_1" -) -sky130_fd_sc_hd__lpflow_inputiso1n_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_inputiso1n_1" -) -sky130_fd_sc_hd__lpflow_inputiso1p_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_inputiso1p_1" -) -sky130_fd_sc_hd__lpflow_inputisolatch_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_inputisolatch_1" -) -sky130_fd_sc_hd__lpflow_isobufsrc_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_isobufsrc_1" -) -sky130_fd_sc_hd__lpflow_isobufsrc_16 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_isobufsrc_16" -) -sky130_fd_sc_hd__lpflow_isobufsrc_2 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_isobufsrc_2" -) -sky130_fd_sc_hd__lpflow_isobufsrc_4 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_isobufsrc_4" -) -sky130_fd_sc_hd__lpflow_isobufsrc_8 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_isobufsrc_8" -) -sky130_fd_sc_hd__lpflow_isobufsrckapwr_16 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_isobufsrckapwr_16" -) -sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_1" -) -sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_2" -) -sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_lsbuf_lh_hl_isowell_tap_4" -) -sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_4" -) -sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_1" -) -sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_2" -) -sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4 = partial( - import_spice, "sky130_fd_sc_hd__lpflow_lsbuf_lh_isowell_tap_4" -) -sky130_fd_sc_hd__macro_sparecell = partial( - import_spice, "sky130_fd_sc_hd__macro_sparecell" -) -sky130_fd_sc_hd__maj3_1 = partial(import_spice, "sky130_fd_sc_hd__maj3_1") -sky130_fd_sc_hd__maj3_2 = partial(import_spice, "sky130_fd_sc_hd__maj3_2") -sky130_fd_sc_hd__maj3_4 = partial(import_spice, "sky130_fd_sc_hd__maj3_4") -sky130_fd_sc_hd__mux2_1 = partial(import_spice, "sky130_fd_sc_hd__mux2_1") -sky130_fd_sc_hd__mux2_2 = partial(import_spice, "sky130_fd_sc_hd__mux2_2") -sky130_fd_sc_hd__mux2_4 = partial(import_spice, "sky130_fd_sc_hd__mux2_4") -sky130_fd_sc_hd__mux2_8 = partial(import_spice, "sky130_fd_sc_hd__mux2_8") -sky130_fd_sc_hd__mux2i_1 = partial(import_spice, "sky130_fd_sc_hd__mux2i_1") -sky130_fd_sc_hd__mux2i_2 = partial(import_spice, "sky130_fd_sc_hd__mux2i_2") -sky130_fd_sc_hd__mux2i_4 = partial(import_spice, "sky130_fd_sc_hd__mux2i_4") -sky130_fd_sc_hd__mux4_1 = partial(import_spice, "sky130_fd_sc_hd__mux4_1") -sky130_fd_sc_hd__mux4_2 = partial(import_spice, "sky130_fd_sc_hd__mux4_2") -sky130_fd_sc_hd__mux4_4 = partial(import_spice, "sky130_fd_sc_hd__mux4_4") -sky130_fd_sc_hd__nand2_1 = partial(import_spice, "sky130_fd_sc_hd__nand2_1") -sky130_fd_sc_hd__nand2_2 = partial(import_spice, "sky130_fd_sc_hd__nand2_2") -sky130_fd_sc_hd__nand2_4 = partial(import_spice, "sky130_fd_sc_hd__nand2_4") -sky130_fd_sc_hd__nand2_8 = partial(import_spice, "sky130_fd_sc_hd__nand2_8") -sky130_fd_sc_hd__nand2b_1 = partial(import_spice, "sky130_fd_sc_hd__nand2b_1") -sky130_fd_sc_hd__nand2b_2 = partial(import_spice, "sky130_fd_sc_hd__nand2b_2") -sky130_fd_sc_hd__nand2b_4 = partial(import_spice, "sky130_fd_sc_hd__nand2b_4") -sky130_fd_sc_hd__nand3_1 = partial(import_spice, "sky130_fd_sc_hd__nand3_1") -sky130_fd_sc_hd__nand3_2 = partial(import_spice, "sky130_fd_sc_hd__nand3_2") -sky130_fd_sc_hd__nand3_4 = partial(import_spice, "sky130_fd_sc_hd__nand3_4") -sky130_fd_sc_hd__nand3b_1 = partial(import_spice, "sky130_fd_sc_hd__nand3b_1") -sky130_fd_sc_hd__nand3b_2 = partial(import_spice, "sky130_fd_sc_hd__nand3b_2") -sky130_fd_sc_hd__nand3b_4 = partial(import_spice, "sky130_fd_sc_hd__nand3b_4") -sky130_fd_sc_hd__nand4_1 = partial(import_spice, "sky130_fd_sc_hd__nand4_1") -sky130_fd_sc_hd__nand4_2 = partial(import_spice, "sky130_fd_sc_hd__nand4_2") -sky130_fd_sc_hd__nand4_4 = partial(import_spice, "sky130_fd_sc_hd__nand4_4") -sky130_fd_sc_hd__nand4b_1 = partial(import_spice, "sky130_fd_sc_hd__nand4b_1") -sky130_fd_sc_hd__nand4b_2 = partial(import_spice, "sky130_fd_sc_hd__nand4b_2") -sky130_fd_sc_hd__nand4b_4 = partial(import_spice, "sky130_fd_sc_hd__nand4b_4") -sky130_fd_sc_hd__nand4bb_1 = partial(import_spice, "sky130_fd_sc_hd__nand4bb_1") -sky130_fd_sc_hd__nand4bb_2 = partial(import_spice, "sky130_fd_sc_hd__nand4bb_2") -sky130_fd_sc_hd__nand4bb_4 = partial(import_spice, "sky130_fd_sc_hd__nand4bb_4") -sky130_fd_sc_hd__nor2_1 = partial(import_spice, "sky130_fd_sc_hd__nor2_1") -sky130_fd_sc_hd__nor2_2 = partial(import_spice, "sky130_fd_sc_hd__nor2_2") -sky130_fd_sc_hd__nor2_4 = partial(import_spice, "sky130_fd_sc_hd__nor2_4") -sky130_fd_sc_hd__nor2_8 = partial(import_spice, "sky130_fd_sc_hd__nor2_8") -sky130_fd_sc_hd__nor2b_1 = partial(import_spice, "sky130_fd_sc_hd__nor2b_1") -sky130_fd_sc_hd__nor2b_2 = partial(import_spice, "sky130_fd_sc_hd__nor2b_2") -sky130_fd_sc_hd__nor2b_4 = partial(import_spice, "sky130_fd_sc_hd__nor2b_4") -sky130_fd_sc_hd__nor3_1 = partial(import_spice, "sky130_fd_sc_hd__nor3_1") -sky130_fd_sc_hd__nor3_2 = partial(import_spice, "sky130_fd_sc_hd__nor3_2") -sky130_fd_sc_hd__nor3_4 = partial(import_spice, "sky130_fd_sc_hd__nor3_4") -sky130_fd_sc_hd__nor3b_1 = partial(import_spice, "sky130_fd_sc_hd__nor3b_1") -sky130_fd_sc_hd__nor3b_2 = partial(import_spice, "sky130_fd_sc_hd__nor3b_2") -sky130_fd_sc_hd__nor3b_4 = partial(import_spice, "sky130_fd_sc_hd__nor3b_4") -sky130_fd_sc_hd__nor4_1 = partial(import_spice, "sky130_fd_sc_hd__nor4_1") -sky130_fd_sc_hd__nor4_2 = partial(import_spice, "sky130_fd_sc_hd__nor4_2") -sky130_fd_sc_hd__nor4_4 = partial(import_spice, "sky130_fd_sc_hd__nor4_4") -sky130_fd_sc_hd__nor4b_1 = partial(import_spice, "sky130_fd_sc_hd__nor4b_1") -sky130_fd_sc_hd__nor4b_2 = partial(import_spice, "sky130_fd_sc_hd__nor4b_2") -sky130_fd_sc_hd__nor4b_4 = partial(import_spice, "sky130_fd_sc_hd__nor4b_4") -sky130_fd_sc_hd__nor4bb_1 = partial(import_spice, "sky130_fd_sc_hd__nor4bb_1") -sky130_fd_sc_hd__nor4bb_2 = partial(import_spice, "sky130_fd_sc_hd__nor4bb_2") -sky130_fd_sc_hd__nor4bb_4 = partial(import_spice, "sky130_fd_sc_hd__nor4bb_4") -sky130_fd_sc_hd__o2111a_1 = partial(import_spice, "sky130_fd_sc_hd__o2111a_1") -sky130_fd_sc_hd__o2111a_2 = partial(import_spice, "sky130_fd_sc_hd__o2111a_2") -sky130_fd_sc_hd__o2111a_4 = partial(import_spice, "sky130_fd_sc_hd__o2111a_4") -sky130_fd_sc_hd__o2111ai_1 = partial(import_spice, "sky130_fd_sc_hd__o2111ai_1") -sky130_fd_sc_hd__o2111ai_2 = partial(import_spice, "sky130_fd_sc_hd__o2111ai_2") -sky130_fd_sc_hd__o2111ai_4 = partial(import_spice, "sky130_fd_sc_hd__o2111ai_4") -sky130_fd_sc_hd__o211a_1 = partial(import_spice, "sky130_fd_sc_hd__o211a_1") -sky130_fd_sc_hd__o211a_2 = partial(import_spice, "sky130_fd_sc_hd__o211a_2") -sky130_fd_sc_hd__o211a_4 = partial(import_spice, "sky130_fd_sc_hd__o211a_4") -sky130_fd_sc_hd__o211ai_1 = partial(import_spice, "sky130_fd_sc_hd__o211ai_1") -sky130_fd_sc_hd__o211ai_2 = partial(import_spice, "sky130_fd_sc_hd__o211ai_2") -sky130_fd_sc_hd__o211ai_4 = partial(import_spice, "sky130_fd_sc_hd__o211ai_4") -sky130_fd_sc_hd__o21a_1 = partial(import_spice, "sky130_fd_sc_hd__o21a_1") -sky130_fd_sc_hd__o21a_2 = partial(import_spice, "sky130_fd_sc_hd__o21a_2") -sky130_fd_sc_hd__o21a_4 = partial(import_spice, "sky130_fd_sc_hd__o21a_4") -sky130_fd_sc_hd__o21ai_0 = partial(import_spice, "sky130_fd_sc_hd__o21ai_0") -sky130_fd_sc_hd__o21ai_1 = partial(import_spice, "sky130_fd_sc_hd__o21ai_1") -sky130_fd_sc_hd__o21ai_2 = partial(import_spice, "sky130_fd_sc_hd__o21ai_2") -sky130_fd_sc_hd__o21ai_4 = partial(import_spice, "sky130_fd_sc_hd__o21ai_4") -sky130_fd_sc_hd__o21ba_1 = partial(import_spice, "sky130_fd_sc_hd__o21ba_1") -sky130_fd_sc_hd__o21ba_2 = partial(import_spice, "sky130_fd_sc_hd__o21ba_2") -sky130_fd_sc_hd__o21ba_4 = partial(import_spice, "sky130_fd_sc_hd__o21ba_4") -sky130_fd_sc_hd__o21bai_1 = partial(import_spice, "sky130_fd_sc_hd__o21bai_1") -sky130_fd_sc_hd__o21bai_2 = partial(import_spice, "sky130_fd_sc_hd__o21bai_2") -sky130_fd_sc_hd__o21bai_4 = partial(import_spice, "sky130_fd_sc_hd__o21bai_4") -sky130_fd_sc_hd__o221a_1 = partial(import_spice, "sky130_fd_sc_hd__o221a_1") -sky130_fd_sc_hd__o221a_2 = partial(import_spice, "sky130_fd_sc_hd__o221a_2") -sky130_fd_sc_hd__o221a_4 = partial(import_spice, "sky130_fd_sc_hd__o221a_4") -sky130_fd_sc_hd__o221ai_1 = partial(import_spice, "sky130_fd_sc_hd__o221ai_1") -sky130_fd_sc_hd__o221ai_2 = partial(import_spice, "sky130_fd_sc_hd__o221ai_2") -sky130_fd_sc_hd__o221ai_4 = partial(import_spice, "sky130_fd_sc_hd__o221ai_4") -sky130_fd_sc_hd__o22a_1 = partial(import_spice, "sky130_fd_sc_hd__o22a_1") -sky130_fd_sc_hd__o22a_2 = partial(import_spice, "sky130_fd_sc_hd__o22a_2") -sky130_fd_sc_hd__o22a_4 = partial(import_spice, "sky130_fd_sc_hd__o22a_4") -sky130_fd_sc_hd__o22ai_1 = partial(import_spice, "sky130_fd_sc_hd__o22ai_1") -sky130_fd_sc_hd__o22ai_2 = partial(import_spice, "sky130_fd_sc_hd__o22ai_2") -sky130_fd_sc_hd__o22ai_4 = partial(import_spice, "sky130_fd_sc_hd__o22ai_4") -sky130_fd_sc_hd__o2bb2a_1 = partial(import_spice, "sky130_fd_sc_hd__o2bb2a_1") -sky130_fd_sc_hd__o2bb2a_2 = partial(import_spice, "sky130_fd_sc_hd__o2bb2a_2") -sky130_fd_sc_hd__o2bb2a_4 = partial(import_spice, "sky130_fd_sc_hd__o2bb2a_4") -sky130_fd_sc_hd__o2bb2ai_1 = partial(import_spice, "sky130_fd_sc_hd__o2bb2ai_1") -sky130_fd_sc_hd__o2bb2ai_2 = partial(import_spice, "sky130_fd_sc_hd__o2bb2ai_2") -sky130_fd_sc_hd__o2bb2ai_4 = partial(import_spice, "sky130_fd_sc_hd__o2bb2ai_4") -sky130_fd_sc_hd__o311a_1 = partial(import_spice, "sky130_fd_sc_hd__o311a_1") -sky130_fd_sc_hd__o311a_2 = partial(import_spice, "sky130_fd_sc_hd__o311a_2") -sky130_fd_sc_hd__o311a_4 = partial(import_spice, "sky130_fd_sc_hd__o311a_4") -sky130_fd_sc_hd__o311ai_0 = partial(import_spice, "sky130_fd_sc_hd__o311ai_0") -sky130_fd_sc_hd__o311ai_1 = partial(import_spice, "sky130_fd_sc_hd__o311ai_1") -sky130_fd_sc_hd__o311ai_2 = partial(import_spice, "sky130_fd_sc_hd__o311ai_2") -sky130_fd_sc_hd__o311ai_4 = partial(import_spice, "sky130_fd_sc_hd__o311ai_4") -sky130_fd_sc_hd__o31a_1 = partial(import_spice, "sky130_fd_sc_hd__o31a_1") -sky130_fd_sc_hd__o31a_2 = partial(import_spice, "sky130_fd_sc_hd__o31a_2") -sky130_fd_sc_hd__o31a_4 = partial(import_spice, "sky130_fd_sc_hd__o31a_4") -sky130_fd_sc_hd__o31ai_1 = partial(import_spice, "sky130_fd_sc_hd__o31ai_1") -sky130_fd_sc_hd__o31ai_2 = partial(import_spice, "sky130_fd_sc_hd__o31ai_2") -sky130_fd_sc_hd__o31ai_4 = partial(import_spice, "sky130_fd_sc_hd__o31ai_4") -sky130_fd_sc_hd__o32a_1 = partial(import_spice, "sky130_fd_sc_hd__o32a_1") -sky130_fd_sc_hd__o32a_2 = partial(import_spice, "sky130_fd_sc_hd__o32a_2") -sky130_fd_sc_hd__o32a_4 = partial(import_spice, "sky130_fd_sc_hd__o32a_4") -sky130_fd_sc_hd__o32ai_1 = partial(import_spice, "sky130_fd_sc_hd__o32ai_1") -sky130_fd_sc_hd__o32ai_2 = partial(import_spice, "sky130_fd_sc_hd__o32ai_2") -sky130_fd_sc_hd__o32ai_4 = partial(import_spice, "sky130_fd_sc_hd__o32ai_4") -sky130_fd_sc_hd__o41a_1 = partial(import_spice, "sky130_fd_sc_hd__o41a_1") -sky130_fd_sc_hd__o41a_2 = partial(import_spice, "sky130_fd_sc_hd__o41a_2") -sky130_fd_sc_hd__o41a_4 = partial(import_spice, "sky130_fd_sc_hd__o41a_4") -sky130_fd_sc_hd__o41ai_1 = partial(import_spice, "sky130_fd_sc_hd__o41ai_1") -sky130_fd_sc_hd__o41ai_2 = partial(import_spice, "sky130_fd_sc_hd__o41ai_2") -sky130_fd_sc_hd__o41ai_4 = partial(import_spice, "sky130_fd_sc_hd__o41ai_4") -sky130_fd_sc_hd__or2_0 = partial(import_spice, "sky130_fd_sc_hd__or2_0") -sky130_fd_sc_hd__or2_1 = partial(import_spice, "sky130_fd_sc_hd__or2_1") -sky130_fd_sc_hd__or2_2 = partial(import_spice, "sky130_fd_sc_hd__or2_2") -sky130_fd_sc_hd__or2_4 = partial(import_spice, "sky130_fd_sc_hd__or2_4") -sky130_fd_sc_hd__or2b_1 = partial(import_spice, "sky130_fd_sc_hd__or2b_1") -sky130_fd_sc_hd__or2b_2 = partial(import_spice, "sky130_fd_sc_hd__or2b_2") -sky130_fd_sc_hd__or2b_4 = partial(import_spice, "sky130_fd_sc_hd__or2b_4") -sky130_fd_sc_hd__or3_1 = partial(import_spice, "sky130_fd_sc_hd__or3_1") -sky130_fd_sc_hd__or3_2 = partial(import_spice, "sky130_fd_sc_hd__or3_2") -sky130_fd_sc_hd__or3_4 = partial(import_spice, "sky130_fd_sc_hd__or3_4") -sky130_fd_sc_hd__or3b_1 = partial(import_spice, "sky130_fd_sc_hd__or3b_1") -sky130_fd_sc_hd__or3b_2 = partial(import_spice, "sky130_fd_sc_hd__or3b_2") -sky130_fd_sc_hd__or3b_4 = partial(import_spice, "sky130_fd_sc_hd__or3b_4") -sky130_fd_sc_hd__or4_1 = partial(import_spice, "sky130_fd_sc_hd__or4_1") -sky130_fd_sc_hd__or4_2 = partial(import_spice, "sky130_fd_sc_hd__or4_2") -sky130_fd_sc_hd__or4_4 = partial(import_spice, "sky130_fd_sc_hd__or4_4") -sky130_fd_sc_hd__or4b_1 = partial(import_spice, "sky130_fd_sc_hd__or4b_1") -sky130_fd_sc_hd__or4b_2 = partial(import_spice, "sky130_fd_sc_hd__or4b_2") -sky130_fd_sc_hd__or4b_4 = partial(import_spice, "sky130_fd_sc_hd__or4b_4") -sky130_fd_sc_hd__or4bb_1 = partial(import_spice, "sky130_fd_sc_hd__or4bb_1") -sky130_fd_sc_hd__or4bb_2 = partial(import_spice, "sky130_fd_sc_hd__or4bb_2") -sky130_fd_sc_hd__or4bb_4 = partial(import_spice, "sky130_fd_sc_hd__or4bb_4") -sky130_fd_sc_hd__probe_p_8 = partial(import_spice, "sky130_fd_sc_hd__probe_p_8") -sky130_fd_sc_hd__probec_p_8 = partial(import_spice, "sky130_fd_sc_hd__probec_p_8") -sky130_fd_sc_hd__sdfbbn_1 = partial(import_spice, "sky130_fd_sc_hd__sdfbbn_1") -sky130_fd_sc_hd__sdfbbn_2 = partial(import_spice, "sky130_fd_sc_hd__sdfbbn_2") -sky130_fd_sc_hd__sdfbbp_1 = partial(import_spice, "sky130_fd_sc_hd__sdfbbp_1") -sky130_fd_sc_hd__sdfrbp_1 = partial(import_spice, "sky130_fd_sc_hd__sdfrbp_1") -sky130_fd_sc_hd__sdfrbp_2 = partial(import_spice, "sky130_fd_sc_hd__sdfrbp_2") -sky130_fd_sc_hd__sdfrtn_1 = partial(import_spice, "sky130_fd_sc_hd__sdfrtn_1") -sky130_fd_sc_hd__sdfrtp_1 = partial(import_spice, "sky130_fd_sc_hd__sdfrtp_1") -sky130_fd_sc_hd__sdfrtp_2 = partial(import_spice, "sky130_fd_sc_hd__sdfrtp_2") -sky130_fd_sc_hd__sdfrtp_4 = partial(import_spice, "sky130_fd_sc_hd__sdfrtp_4") -sky130_fd_sc_hd__sdfsbp_1 = partial(import_spice, "sky130_fd_sc_hd__sdfsbp_1") -sky130_fd_sc_hd__sdfsbp_2 = partial(import_spice, "sky130_fd_sc_hd__sdfsbp_2") -sky130_fd_sc_hd__sdfstp_1 = partial(import_spice, "sky130_fd_sc_hd__sdfstp_1") -sky130_fd_sc_hd__sdfstp_2 = partial(import_spice, "sky130_fd_sc_hd__sdfstp_2") -sky130_fd_sc_hd__sdfstp_4 = partial(import_spice, "sky130_fd_sc_hd__sdfstp_4") -sky130_fd_sc_hd__sdfxbp_1 = partial(import_spice, "sky130_fd_sc_hd__sdfxbp_1") -sky130_fd_sc_hd__sdfxbp_2 = partial(import_spice, "sky130_fd_sc_hd__sdfxbp_2") -sky130_fd_sc_hd__sdfxtp_1 = partial(import_spice, "sky130_fd_sc_hd__sdfxtp_1") -sky130_fd_sc_hd__sdfxtp_2 = partial(import_spice, "sky130_fd_sc_hd__sdfxtp_2") -sky130_fd_sc_hd__sdfxtp_4 = partial(import_spice, "sky130_fd_sc_hd__sdfxtp_4") -sky130_fd_sc_hd__sdlclkp_1 = partial(import_spice, "sky130_fd_sc_hd__sdlclkp_1") -sky130_fd_sc_hd__sdlclkp_2 = partial(import_spice, "sky130_fd_sc_hd__sdlclkp_2") -sky130_fd_sc_hd__sdlclkp_4 = partial(import_spice, "sky130_fd_sc_hd__sdlclkp_4") -sky130_fd_sc_hd__sedfxbp_1 = partial(import_spice, "sky130_fd_sc_hd__sedfxbp_1") -sky130_fd_sc_hd__sedfxbp_2 = partial(import_spice, "sky130_fd_sc_hd__sedfxbp_2") -sky130_fd_sc_hd__sedfxtp_1 = partial(import_spice, "sky130_fd_sc_hd__sedfxtp_1") -sky130_fd_sc_hd__sedfxtp_2 = partial(import_spice, "sky130_fd_sc_hd__sedfxtp_2") -sky130_fd_sc_hd__sedfxtp_4 = partial(import_spice, "sky130_fd_sc_hd__sedfxtp_4") -sky130_fd_sc_hd__tap_1 = partial(import_spice, "sky130_fd_sc_hd__tap_1") -sky130_fd_sc_hd__tap_2 = partial(import_spice, "sky130_fd_sc_hd__tap_2") -sky130_fd_sc_hd__tapvgnd2_1 = partial(import_spice, "sky130_fd_sc_hd__tapvgnd2_1") -sky130_fd_sc_hd__tapvgnd_1 = partial(import_spice, "sky130_fd_sc_hd__tapvgnd_1") -sky130_fd_sc_hd__tapvpwrvgnd_1 = partial(import_spice, "sky130_fd_sc_hd__tapvpwrvgnd_1") -sky130_fd_sc_hd__xnor2_1 = partial(import_spice, "sky130_fd_sc_hd__xnor2_1") -sky130_fd_sc_hd__xnor2_2 = partial(import_spice, "sky130_fd_sc_hd__xnor2_2") -sky130_fd_sc_hd__xnor2_4 = partial(import_spice, "sky130_fd_sc_hd__xnor2_4") -sky130_fd_sc_hd__xnor3_1 = partial(import_spice, "sky130_fd_sc_hd__xnor3_1") -sky130_fd_sc_hd__xnor3_2 = partial(import_spice, "sky130_fd_sc_hd__xnor3_2") -sky130_fd_sc_hd__xnor3_4 = partial(import_spice, "sky130_fd_sc_hd__xnor3_4") -sky130_fd_sc_hd__xor2_1 = partial(import_spice, "sky130_fd_sc_hd__xor2_1") -sky130_fd_sc_hd__xor2_2 = partial(import_spice, "sky130_fd_sc_hd__xor2_2") -sky130_fd_sc_hd__xor2_4 = partial(import_spice, "sky130_fd_sc_hd__xor2_4") -sky130_fd_sc_hd__xor3_1 = partial(import_spice, "sky130_fd_sc_hd__xor3_1") -sky130_fd_sc_hd__xor3_2 = partial(import_spice, "sky130_fd_sc_hd__xor3_2") -sky130_fd_sc_hd__xor3_4 = partial(import_spice, "sky130_fd_sc_hd__xor3_4") -sky130_fd_sc_hs__a2111o_1 = partial(import_spice, "sky130_fd_sc_hs__a2111o_1") -sky130_fd_sc_hs__a2111o_2 = partial(import_spice, "sky130_fd_sc_hs__a2111o_2") -sky130_fd_sc_hs__a2111o_4 = partial(import_spice, "sky130_fd_sc_hs__a2111o_4") -sky130_fd_sc_hs__a2111oi_1 = partial(import_spice, "sky130_fd_sc_hs__a2111oi_1") -sky130_fd_sc_hs__a2111oi_2 = partial(import_spice, "sky130_fd_sc_hs__a2111oi_2") -sky130_fd_sc_hs__a2111oi_4 = partial(import_spice, "sky130_fd_sc_hs__a2111oi_4") -sky130_fd_sc_hs__a211o_1 = partial(import_spice, "sky130_fd_sc_hs__a211o_1") -sky130_fd_sc_hs__a211o_2 = partial(import_spice, "sky130_fd_sc_hs__a211o_2") -sky130_fd_sc_hs__a211o_4 = partial(import_spice, "sky130_fd_sc_hs__a211o_4") -sky130_fd_sc_hs__a211oi_1 = partial(import_spice, "sky130_fd_sc_hs__a211oi_1") -sky130_fd_sc_hs__a211oi_2 = partial(import_spice, "sky130_fd_sc_hs__a211oi_2") -sky130_fd_sc_hs__a211oi_4 = partial(import_spice, "sky130_fd_sc_hs__a211oi_4") -sky130_fd_sc_hs__a21bo_1 = partial(import_spice, "sky130_fd_sc_hs__a21bo_1") -sky130_fd_sc_hs__a21bo_2 = partial(import_spice, "sky130_fd_sc_hs__a21bo_2") -sky130_fd_sc_hs__a21bo_4 = partial(import_spice, "sky130_fd_sc_hs__a21bo_4") -sky130_fd_sc_hs__a21boi_1 = partial(import_spice, "sky130_fd_sc_hs__a21boi_1") -sky130_fd_sc_hs__a21boi_2 = partial(import_spice, "sky130_fd_sc_hs__a21boi_2") -sky130_fd_sc_hs__a21boi_4 = partial(import_spice, "sky130_fd_sc_hs__a21boi_4") -sky130_fd_sc_hs__a21o_1 = partial(import_spice, "sky130_fd_sc_hs__a21o_1") -sky130_fd_sc_hs__a21o_2 = partial(import_spice, "sky130_fd_sc_hs__a21o_2") -sky130_fd_sc_hs__a21o_4 = partial(import_spice, "sky130_fd_sc_hs__a21o_4") -sky130_fd_sc_hs__a21oi_1 = partial(import_spice, "sky130_fd_sc_hs__a21oi_1") -sky130_fd_sc_hs__a21oi_2 = partial(import_spice, "sky130_fd_sc_hs__a21oi_2") -sky130_fd_sc_hs__a21oi_4 = partial(import_spice, "sky130_fd_sc_hs__a21oi_4") -sky130_fd_sc_hs__a221o_1 = partial(import_spice, "sky130_fd_sc_hs__a221o_1") -sky130_fd_sc_hs__a221o_2 = partial(import_spice, "sky130_fd_sc_hs__a221o_2") -sky130_fd_sc_hs__a221o_4 = partial(import_spice, "sky130_fd_sc_hs__a221o_4") -sky130_fd_sc_hs__a221oi_1 = partial(import_spice, "sky130_fd_sc_hs__a221oi_1") -sky130_fd_sc_hs__a221oi_2 = partial(import_spice, "sky130_fd_sc_hs__a221oi_2") -sky130_fd_sc_hs__a221oi_4 = partial(import_spice, "sky130_fd_sc_hs__a221oi_4") -sky130_fd_sc_hs__a222o_1 = partial(import_spice, "sky130_fd_sc_hs__a222o_1") -sky130_fd_sc_hs__a222o_2 = partial(import_spice, "sky130_fd_sc_hs__a222o_2") -sky130_fd_sc_hs__a222oi_1 = partial(import_spice, "sky130_fd_sc_hs__a222oi_1") -sky130_fd_sc_hs__a222oi_2 = partial(import_spice, "sky130_fd_sc_hs__a222oi_2") -sky130_fd_sc_hs__a22o_1 = partial(import_spice, "sky130_fd_sc_hs__a22o_1") -sky130_fd_sc_hs__a22o_2 = partial(import_spice, "sky130_fd_sc_hs__a22o_2") -sky130_fd_sc_hs__a22o_4 = partial(import_spice, "sky130_fd_sc_hs__a22o_4") -sky130_fd_sc_hs__a22oi_1 = partial(import_spice, "sky130_fd_sc_hs__a22oi_1") -sky130_fd_sc_hs__a22oi_2 = partial(import_spice, "sky130_fd_sc_hs__a22oi_2") -sky130_fd_sc_hs__a22oi_4 = partial(import_spice, "sky130_fd_sc_hs__a22oi_4") -sky130_fd_sc_hs__a2bb2o_1 = partial(import_spice, "sky130_fd_sc_hs__a2bb2o_1") -sky130_fd_sc_hs__a2bb2o_2 = partial(import_spice, "sky130_fd_sc_hs__a2bb2o_2") -sky130_fd_sc_hs__a2bb2o_4 = partial(import_spice, "sky130_fd_sc_hs__a2bb2o_4") -sky130_fd_sc_hs__a2bb2oi_1 = partial(import_spice, "sky130_fd_sc_hs__a2bb2oi_1") -sky130_fd_sc_hs__a2bb2oi_2 = partial(import_spice, "sky130_fd_sc_hs__a2bb2oi_2") -sky130_fd_sc_hs__a2bb2oi_4 = partial(import_spice, "sky130_fd_sc_hs__a2bb2oi_4") -sky130_fd_sc_hs__a311o_1 = partial(import_spice, "sky130_fd_sc_hs__a311o_1") -sky130_fd_sc_hs__a311o_2 = partial(import_spice, "sky130_fd_sc_hs__a311o_2") -sky130_fd_sc_hs__a311o_4 = partial(import_spice, "sky130_fd_sc_hs__a311o_4") -sky130_fd_sc_hs__a311oi_1 = partial(import_spice, "sky130_fd_sc_hs__a311oi_1") -sky130_fd_sc_hs__a311oi_2 = partial(import_spice, "sky130_fd_sc_hs__a311oi_2") -sky130_fd_sc_hs__a311oi_4 = partial(import_spice, "sky130_fd_sc_hs__a311oi_4") -sky130_fd_sc_hs__a31o_1 = partial(import_spice, "sky130_fd_sc_hs__a31o_1") -sky130_fd_sc_hs__a31o_2 = partial(import_spice, "sky130_fd_sc_hs__a31o_2") -sky130_fd_sc_hs__a31o_4 = partial(import_spice, "sky130_fd_sc_hs__a31o_4") -sky130_fd_sc_hs__a31oi_1 = partial(import_spice, "sky130_fd_sc_hs__a31oi_1") -sky130_fd_sc_hs__a31oi_2 = partial(import_spice, "sky130_fd_sc_hs__a31oi_2") -sky130_fd_sc_hs__a31oi_4 = partial(import_spice, "sky130_fd_sc_hs__a31oi_4") -sky130_fd_sc_hs__a32o_1 = partial(import_spice, "sky130_fd_sc_hs__a32o_1") -sky130_fd_sc_hs__a32o_2 = partial(import_spice, "sky130_fd_sc_hs__a32o_2") -sky130_fd_sc_hs__a32o_4 = partial(import_spice, "sky130_fd_sc_hs__a32o_4") -sky130_fd_sc_hs__a32oi_1 = partial(import_spice, "sky130_fd_sc_hs__a32oi_1") -sky130_fd_sc_hs__a32oi_2 = partial(import_spice, "sky130_fd_sc_hs__a32oi_2") -sky130_fd_sc_hs__a32oi_4 = partial(import_spice, "sky130_fd_sc_hs__a32oi_4") -sky130_fd_sc_hs__a41o_1 = partial(import_spice, "sky130_fd_sc_hs__a41o_1") -sky130_fd_sc_hs__a41o_2 = partial(import_spice, "sky130_fd_sc_hs__a41o_2") -sky130_fd_sc_hs__a41o_4 = partial(import_spice, "sky130_fd_sc_hs__a41o_4") -sky130_fd_sc_hs__a41oi_1 = partial(import_spice, "sky130_fd_sc_hs__a41oi_1") -sky130_fd_sc_hs__a41oi_2 = partial(import_spice, "sky130_fd_sc_hs__a41oi_2") -sky130_fd_sc_hs__a41oi_4 = partial(import_spice, "sky130_fd_sc_hs__a41oi_4") -sky130_fd_sc_hs__and2_1 = partial(import_spice, "sky130_fd_sc_hs__and2_1") -sky130_fd_sc_hs__and2_2 = partial(import_spice, "sky130_fd_sc_hs__and2_2") -sky130_fd_sc_hs__and2_4 = partial(import_spice, "sky130_fd_sc_hs__and2_4") -sky130_fd_sc_hs__and2b_1 = partial(import_spice, "sky130_fd_sc_hs__and2b_1") -sky130_fd_sc_hs__and2b_2 = partial(import_spice, "sky130_fd_sc_hs__and2b_2") -sky130_fd_sc_hs__and2b_4 = partial(import_spice, "sky130_fd_sc_hs__and2b_4") -sky130_fd_sc_hs__and3_1 = partial(import_spice, "sky130_fd_sc_hs__and3_1") -sky130_fd_sc_hs__and3_2 = partial(import_spice, "sky130_fd_sc_hs__and3_2") -sky130_fd_sc_hs__and3_4 = partial(import_spice, "sky130_fd_sc_hs__and3_4") -sky130_fd_sc_hs__and3b_1 = partial(import_spice, "sky130_fd_sc_hs__and3b_1") -sky130_fd_sc_hs__and3b_2 = partial(import_spice, "sky130_fd_sc_hs__and3b_2") -sky130_fd_sc_hs__and3b_4 = partial(import_spice, "sky130_fd_sc_hs__and3b_4") -sky130_fd_sc_hs__and4_1 = partial(import_spice, "sky130_fd_sc_hs__and4_1") -sky130_fd_sc_hs__and4_2 = partial(import_spice, "sky130_fd_sc_hs__and4_2") -sky130_fd_sc_hs__and4_4 = partial(import_spice, "sky130_fd_sc_hs__and4_4") -sky130_fd_sc_hs__and4b_1 = partial(import_spice, "sky130_fd_sc_hs__and4b_1") -sky130_fd_sc_hs__and4b_2 = partial(import_spice, "sky130_fd_sc_hs__and4b_2") -sky130_fd_sc_hs__and4b_4 = partial(import_spice, "sky130_fd_sc_hs__and4b_4") -sky130_fd_sc_hs__and4bb_1 = partial(import_spice, "sky130_fd_sc_hs__and4bb_1") -sky130_fd_sc_hs__and4bb_2 = partial(import_spice, "sky130_fd_sc_hs__and4bb_2") -sky130_fd_sc_hs__and4bb_4 = partial(import_spice, "sky130_fd_sc_hs__and4bb_4") -sky130_fd_sc_hs__buf_1 = partial(import_spice, "sky130_fd_sc_hs__buf_1") -sky130_fd_sc_hs__buf_16 = partial(import_spice, "sky130_fd_sc_hs__buf_16") -sky130_fd_sc_hs__buf_2 = partial(import_spice, "sky130_fd_sc_hs__buf_2") -sky130_fd_sc_hs__buf_4 = partial(import_spice, "sky130_fd_sc_hs__buf_4") -sky130_fd_sc_hs__buf_8 = partial(import_spice, "sky130_fd_sc_hs__buf_8") -sky130_fd_sc_hs__bufbuf_16 = partial(import_spice, "sky130_fd_sc_hs__bufbuf_16") -sky130_fd_sc_hs__bufbuf_8 = partial(import_spice, "sky130_fd_sc_hs__bufbuf_8") -sky130_fd_sc_hs__bufinv_16 = partial(import_spice, "sky130_fd_sc_hs__bufinv_16") -sky130_fd_sc_hs__bufinv_8 = partial(import_spice, "sky130_fd_sc_hs__bufinv_8") -sky130_fd_sc_hs__clkbuf_1 = partial(import_spice, "sky130_fd_sc_hs__clkbuf_1") -sky130_fd_sc_hs__clkbuf_16 = partial(import_spice, "sky130_fd_sc_hs__clkbuf_16") -sky130_fd_sc_hs__clkbuf_2 = partial(import_spice, "sky130_fd_sc_hs__clkbuf_2") -sky130_fd_sc_hs__clkbuf_4 = partial(import_spice, "sky130_fd_sc_hs__clkbuf_4") -sky130_fd_sc_hs__clkbuf_8 = partial(import_spice, "sky130_fd_sc_hs__clkbuf_8") -sky130_fd_sc_hs__clkdlyinv3sd1_1 = partial( - import_spice, "sky130_fd_sc_hs__clkdlyinv3sd1_1" -) -sky130_fd_sc_hs__clkdlyinv3sd2_1 = partial( - import_spice, "sky130_fd_sc_hs__clkdlyinv3sd2_1" -) -sky130_fd_sc_hs__clkdlyinv3sd3_1 = partial( - import_spice, "sky130_fd_sc_hs__clkdlyinv3sd3_1" -) -sky130_fd_sc_hs__clkdlyinv5sd1_1 = partial( - import_spice, "sky130_fd_sc_hs__clkdlyinv5sd1_1" -) -sky130_fd_sc_hs__clkdlyinv5sd2_1 = partial( - import_spice, "sky130_fd_sc_hs__clkdlyinv5sd2_1" -) -sky130_fd_sc_hs__clkdlyinv5sd3_1 = partial( - import_spice, "sky130_fd_sc_hs__clkdlyinv5sd3_1" -) -sky130_fd_sc_hs__clkinv_1 = partial(import_spice, "sky130_fd_sc_hs__clkinv_1") -sky130_fd_sc_hs__clkinv_16 = partial(import_spice, "sky130_fd_sc_hs__clkinv_16") -sky130_fd_sc_hs__clkinv_2 = partial(import_spice, "sky130_fd_sc_hs__clkinv_2") -sky130_fd_sc_hs__clkinv_4 = partial(import_spice, "sky130_fd_sc_hs__clkinv_4") -sky130_fd_sc_hs__clkinv_8 = partial(import_spice, "sky130_fd_sc_hs__clkinv_8") -sky130_fd_sc_hs__conb_1 = partial(import_spice, "sky130_fd_sc_hs__conb_1") -sky130_fd_sc_hs__decap_4 = partial(import_spice, "sky130_fd_sc_hs__decap_4") -sky130_fd_sc_hs__decap_8 = partial(import_spice, "sky130_fd_sc_hs__decap_8") -sky130_fd_sc_hs__dfbbn_1 = partial(import_spice, "sky130_fd_sc_hs__dfbbn_1") -sky130_fd_sc_hs__dfbbn_2 = partial(import_spice, "sky130_fd_sc_hs__dfbbn_2") -sky130_fd_sc_hs__dfbbp_1 = partial(import_spice, "sky130_fd_sc_hs__dfbbp_1") -sky130_fd_sc_hs__dfrbp_1 = partial(import_spice, "sky130_fd_sc_hs__dfrbp_1") -sky130_fd_sc_hs__dfrbp_2 = partial(import_spice, "sky130_fd_sc_hs__dfrbp_2") -sky130_fd_sc_hs__dfrtn_1 = partial(import_spice, "sky130_fd_sc_hs__dfrtn_1") -sky130_fd_sc_hs__dfrtp_1 = partial(import_spice, "sky130_fd_sc_hs__dfrtp_1") -sky130_fd_sc_hs__dfrtp_2 = partial(import_spice, "sky130_fd_sc_hs__dfrtp_2") -sky130_fd_sc_hs__dfrtp_4 = partial(import_spice, "sky130_fd_sc_hs__dfrtp_4") -sky130_fd_sc_hs__dfsbp_1 = partial(import_spice, "sky130_fd_sc_hs__dfsbp_1") -sky130_fd_sc_hs__dfsbp_2 = partial(import_spice, "sky130_fd_sc_hs__dfsbp_2") -sky130_fd_sc_hs__dfstp_1 = partial(import_spice, "sky130_fd_sc_hs__dfstp_1") -sky130_fd_sc_hs__dfstp_2 = partial(import_spice, "sky130_fd_sc_hs__dfstp_2") -sky130_fd_sc_hs__dfstp_4 = partial(import_spice, "sky130_fd_sc_hs__dfstp_4") -sky130_fd_sc_hs__dfxbp_1 = partial(import_spice, "sky130_fd_sc_hs__dfxbp_1") -sky130_fd_sc_hs__dfxbp_2 = partial(import_spice, "sky130_fd_sc_hs__dfxbp_2") -sky130_fd_sc_hs__dfxtp_1 = partial(import_spice, "sky130_fd_sc_hs__dfxtp_1") -sky130_fd_sc_hs__dfxtp_2 = partial(import_spice, "sky130_fd_sc_hs__dfxtp_2") -sky130_fd_sc_hs__dfxtp_4 = partial(import_spice, "sky130_fd_sc_hs__dfxtp_4") -sky130_fd_sc_hs__diode_2 = partial(import_spice, "sky130_fd_sc_hs__diode_2") -sky130_fd_sc_hs__dlclkp_1 = partial(import_spice, "sky130_fd_sc_hs__dlclkp_1") -sky130_fd_sc_hs__dlclkp_2 = partial(import_spice, "sky130_fd_sc_hs__dlclkp_2") -sky130_fd_sc_hs__dlclkp_4 = partial(import_spice, "sky130_fd_sc_hs__dlclkp_4") -sky130_fd_sc_hs__dlrbn_1 = partial(import_spice, "sky130_fd_sc_hs__dlrbn_1") -sky130_fd_sc_hs__dlrbn_2 = partial(import_spice, "sky130_fd_sc_hs__dlrbn_2") -sky130_fd_sc_hs__dlrbp_1 = partial(import_spice, "sky130_fd_sc_hs__dlrbp_1") -sky130_fd_sc_hs__dlrbp_2 = partial(import_spice, "sky130_fd_sc_hs__dlrbp_2") -sky130_fd_sc_hs__dlrtn_1 = partial(import_spice, "sky130_fd_sc_hs__dlrtn_1") -sky130_fd_sc_hs__dlrtn_2 = partial(import_spice, "sky130_fd_sc_hs__dlrtn_2") -sky130_fd_sc_hs__dlrtn_4 = partial(import_spice, "sky130_fd_sc_hs__dlrtn_4") -sky130_fd_sc_hs__dlrtp_1 = partial(import_spice, "sky130_fd_sc_hs__dlrtp_1") -sky130_fd_sc_hs__dlrtp_2 = partial(import_spice, "sky130_fd_sc_hs__dlrtp_2") -sky130_fd_sc_hs__dlrtp_4 = partial(import_spice, "sky130_fd_sc_hs__dlrtp_4") -sky130_fd_sc_hs__dlxbn_1 = partial(import_spice, "sky130_fd_sc_hs__dlxbn_1") -sky130_fd_sc_hs__dlxbn_2 = partial(import_spice, "sky130_fd_sc_hs__dlxbn_2") -sky130_fd_sc_hs__dlxbp_1 = partial(import_spice, "sky130_fd_sc_hs__dlxbp_1") -sky130_fd_sc_hs__dlxtn_1 = partial(import_spice, "sky130_fd_sc_hs__dlxtn_1") -sky130_fd_sc_hs__dlxtn_2 = partial(import_spice, "sky130_fd_sc_hs__dlxtn_2") -sky130_fd_sc_hs__dlxtn_4 = partial(import_spice, "sky130_fd_sc_hs__dlxtn_4") -sky130_fd_sc_hs__dlxtp_1 = partial(import_spice, "sky130_fd_sc_hs__dlxtp_1") -sky130_fd_sc_hs__dlygate4sd1_1 = partial(import_spice, "sky130_fd_sc_hs__dlygate4sd1_1") -sky130_fd_sc_hs__dlygate4sd2_1 = partial(import_spice, "sky130_fd_sc_hs__dlygate4sd2_1") -sky130_fd_sc_hs__dlygate4sd3_1 = partial(import_spice, "sky130_fd_sc_hs__dlygate4sd3_1") -sky130_fd_sc_hs__dlymetal6s2s_1 = partial( - import_spice, "sky130_fd_sc_hs__dlymetal6s2s_1" -) -sky130_fd_sc_hs__dlymetal6s4s_1 = partial( - import_spice, "sky130_fd_sc_hs__dlymetal6s4s_1" -) -sky130_fd_sc_hs__dlymetal6s6s_1 = partial( - import_spice, "sky130_fd_sc_hs__dlymetal6s6s_1" -) -sky130_fd_sc_hs__ebufn_1 = partial(import_spice, "sky130_fd_sc_hs__ebufn_1") -sky130_fd_sc_hs__ebufn_2 = partial(import_spice, "sky130_fd_sc_hs__ebufn_2") -sky130_fd_sc_hs__ebufn_4 = partial(import_spice, "sky130_fd_sc_hs__ebufn_4") -sky130_fd_sc_hs__ebufn_8 = partial(import_spice, "sky130_fd_sc_hs__ebufn_8") -sky130_fd_sc_hs__edfxbp_1 = partial(import_spice, "sky130_fd_sc_hs__edfxbp_1") -sky130_fd_sc_hs__edfxtp_1 = partial(import_spice, "sky130_fd_sc_hs__edfxtp_1") -sky130_fd_sc_hs__einvn_1 = partial(import_spice, "sky130_fd_sc_hs__einvn_1") -sky130_fd_sc_hs__einvn_2 = partial(import_spice, "sky130_fd_sc_hs__einvn_2") -sky130_fd_sc_hs__einvn_4 = partial(import_spice, "sky130_fd_sc_hs__einvn_4") -sky130_fd_sc_hs__einvn_8 = partial(import_spice, "sky130_fd_sc_hs__einvn_8") -sky130_fd_sc_hs__einvp_1 = partial(import_spice, "sky130_fd_sc_hs__einvp_1") -sky130_fd_sc_hs__einvp_2 = partial(import_spice, "sky130_fd_sc_hs__einvp_2") -sky130_fd_sc_hs__einvp_4 = partial(import_spice, "sky130_fd_sc_hs__einvp_4") -sky130_fd_sc_hs__einvp_8 = partial(import_spice, "sky130_fd_sc_hs__einvp_8") -sky130_fd_sc_hs__fa_1 = partial(import_spice, "sky130_fd_sc_hs__fa_1") -sky130_fd_sc_hs__fa_2 = partial(import_spice, "sky130_fd_sc_hs__fa_2") -sky130_fd_sc_hs__fa_4 = partial(import_spice, "sky130_fd_sc_hs__fa_4") -sky130_fd_sc_hs__fah_1 = partial(import_spice, "sky130_fd_sc_hs__fah_1") -sky130_fd_sc_hs__fah_2 = partial(import_spice, "sky130_fd_sc_hs__fah_2") -sky130_fd_sc_hs__fah_4 = partial(import_spice, "sky130_fd_sc_hs__fah_4") -sky130_fd_sc_hs__fahcin_1 = partial(import_spice, "sky130_fd_sc_hs__fahcin_1") -sky130_fd_sc_hs__fahcon_1 = partial(import_spice, "sky130_fd_sc_hs__fahcon_1") -sky130_fd_sc_hs__fill_1 = partial(import_spice, "sky130_fd_sc_hs__fill_1") -sky130_fd_sc_hs__fill_2 = partial(import_spice, "sky130_fd_sc_hs__fill_2") -sky130_fd_sc_hs__fill_4 = partial(import_spice, "sky130_fd_sc_hs__fill_4") -sky130_fd_sc_hs__fill_8 = partial(import_spice, "sky130_fd_sc_hs__fill_8") -sky130_fd_sc_hs__fill_diode_2 = partial(import_spice, "sky130_fd_sc_hs__fill_diode_2") -sky130_fd_sc_hs__fill_diode_4 = partial(import_spice, "sky130_fd_sc_hs__fill_diode_4") -sky130_fd_sc_hs__fill_diode_8 = partial(import_spice, "sky130_fd_sc_hs__fill_diode_8") -sky130_fd_sc_hs__ha_1 = partial(import_spice, "sky130_fd_sc_hs__ha_1") -sky130_fd_sc_hs__ha_2 = partial(import_spice, "sky130_fd_sc_hs__ha_2") -sky130_fd_sc_hs__ha_4 = partial(import_spice, "sky130_fd_sc_hs__ha_4") -sky130_fd_sc_hs__inv_1 = partial(import_spice, "sky130_fd_sc_hs__inv_1") -sky130_fd_sc_hs__inv_16 = partial(import_spice, "sky130_fd_sc_hs__inv_16") -sky130_fd_sc_hs__inv_2 = partial(import_spice, "sky130_fd_sc_hs__inv_2") -sky130_fd_sc_hs__inv_4 = partial(import_spice, "sky130_fd_sc_hs__inv_4") -sky130_fd_sc_hs__inv_8 = partial(import_spice, "sky130_fd_sc_hs__inv_8") -sky130_fd_sc_hs__maj3_1 = partial(import_spice, "sky130_fd_sc_hs__maj3_1") -sky130_fd_sc_hs__maj3_2 = partial(import_spice, "sky130_fd_sc_hs__maj3_2") -sky130_fd_sc_hs__maj3_4 = partial(import_spice, "sky130_fd_sc_hs__maj3_4") -sky130_fd_sc_hs__mux2_1 = partial(import_spice, "sky130_fd_sc_hs__mux2_1") -sky130_fd_sc_hs__mux2_2 = partial(import_spice, "sky130_fd_sc_hs__mux2_2") -sky130_fd_sc_hs__mux2_4 = partial(import_spice, "sky130_fd_sc_hs__mux2_4") -sky130_fd_sc_hs__mux2i_1 = partial(import_spice, "sky130_fd_sc_hs__mux2i_1") -sky130_fd_sc_hs__mux2i_2 = partial(import_spice, "sky130_fd_sc_hs__mux2i_2") -sky130_fd_sc_hs__mux2i_4 = partial(import_spice, "sky130_fd_sc_hs__mux2i_4") -sky130_fd_sc_hs__mux4_1 = partial(import_spice, "sky130_fd_sc_hs__mux4_1") -sky130_fd_sc_hs__mux4_2 = partial(import_spice, "sky130_fd_sc_hs__mux4_2") -sky130_fd_sc_hs__mux4_4 = partial(import_spice, "sky130_fd_sc_hs__mux4_4") -sky130_fd_sc_hs__nand2_1 = partial(import_spice, "sky130_fd_sc_hs__nand2_1") -sky130_fd_sc_hs__nand2_2 = partial(import_spice, "sky130_fd_sc_hs__nand2_2") -sky130_fd_sc_hs__nand2_4 = partial(import_spice, "sky130_fd_sc_hs__nand2_4") -sky130_fd_sc_hs__nand2_8 = partial(import_spice, "sky130_fd_sc_hs__nand2_8") -sky130_fd_sc_hs__nand2b_1 = partial(import_spice, "sky130_fd_sc_hs__nand2b_1") -sky130_fd_sc_hs__nand2b_2 = partial(import_spice, "sky130_fd_sc_hs__nand2b_2") -sky130_fd_sc_hs__nand2b_4 = partial(import_spice, "sky130_fd_sc_hs__nand2b_4") -sky130_fd_sc_hs__nand3_1 = partial(import_spice, "sky130_fd_sc_hs__nand3_1") -sky130_fd_sc_hs__nand3_2 = partial(import_spice, "sky130_fd_sc_hs__nand3_2") -sky130_fd_sc_hs__nand3_4 = partial(import_spice, "sky130_fd_sc_hs__nand3_4") -sky130_fd_sc_hs__nand3b_1 = partial(import_spice, "sky130_fd_sc_hs__nand3b_1") -sky130_fd_sc_hs__nand3b_2 = partial(import_spice, "sky130_fd_sc_hs__nand3b_2") -sky130_fd_sc_hs__nand3b_4 = partial(import_spice, "sky130_fd_sc_hs__nand3b_4") -sky130_fd_sc_hs__nand4_1 = partial(import_spice, "sky130_fd_sc_hs__nand4_1") -sky130_fd_sc_hs__nand4_2 = partial(import_spice, "sky130_fd_sc_hs__nand4_2") -sky130_fd_sc_hs__nand4_4 = partial(import_spice, "sky130_fd_sc_hs__nand4_4") -sky130_fd_sc_hs__nand4b_1 = partial(import_spice, "sky130_fd_sc_hs__nand4b_1") -sky130_fd_sc_hs__nand4b_2 = partial(import_spice, "sky130_fd_sc_hs__nand4b_2") -sky130_fd_sc_hs__nand4b_4 = partial(import_spice, "sky130_fd_sc_hs__nand4b_4") -sky130_fd_sc_hs__nand4bb_1 = partial(import_spice, "sky130_fd_sc_hs__nand4bb_1") -sky130_fd_sc_hs__nand4bb_2 = partial(import_spice, "sky130_fd_sc_hs__nand4bb_2") -sky130_fd_sc_hs__nand4bb_4 = partial(import_spice, "sky130_fd_sc_hs__nand4bb_4") -sky130_fd_sc_hs__nor2_1 = partial(import_spice, "sky130_fd_sc_hs__nor2_1") -sky130_fd_sc_hs__nor2_2 = partial(import_spice, "sky130_fd_sc_hs__nor2_2") -sky130_fd_sc_hs__nor2_4 = partial(import_spice, "sky130_fd_sc_hs__nor2_4") -sky130_fd_sc_hs__nor2_8 = partial(import_spice, "sky130_fd_sc_hs__nor2_8") -sky130_fd_sc_hs__nor2b_1 = partial(import_spice, "sky130_fd_sc_hs__nor2b_1") -sky130_fd_sc_hs__nor2b_2 = partial(import_spice, "sky130_fd_sc_hs__nor2b_2") -sky130_fd_sc_hs__nor2b_4 = partial(import_spice, "sky130_fd_sc_hs__nor2b_4") -sky130_fd_sc_hs__nor3_1 = partial(import_spice, "sky130_fd_sc_hs__nor3_1") -sky130_fd_sc_hs__nor3_2 = partial(import_spice, "sky130_fd_sc_hs__nor3_2") -sky130_fd_sc_hs__nor3_4 = partial(import_spice, "sky130_fd_sc_hs__nor3_4") -sky130_fd_sc_hs__nor3b_1 = partial(import_spice, "sky130_fd_sc_hs__nor3b_1") -sky130_fd_sc_hs__nor3b_2 = partial(import_spice, "sky130_fd_sc_hs__nor3b_2") -sky130_fd_sc_hs__nor3b_4 = partial(import_spice, "sky130_fd_sc_hs__nor3b_4") -sky130_fd_sc_hs__nor4_1 = partial(import_spice, "sky130_fd_sc_hs__nor4_1") -sky130_fd_sc_hs__nor4_2 = partial(import_spice, "sky130_fd_sc_hs__nor4_2") -sky130_fd_sc_hs__nor4_4 = partial(import_spice, "sky130_fd_sc_hs__nor4_4") -sky130_fd_sc_hs__nor4b_1 = partial(import_spice, "sky130_fd_sc_hs__nor4b_1") -sky130_fd_sc_hs__nor4b_2 = partial(import_spice, "sky130_fd_sc_hs__nor4b_2") -sky130_fd_sc_hs__nor4b_4 = partial(import_spice, "sky130_fd_sc_hs__nor4b_4") -sky130_fd_sc_hs__nor4bb_1 = partial(import_spice, "sky130_fd_sc_hs__nor4bb_1") -sky130_fd_sc_hs__nor4bb_2 = partial(import_spice, "sky130_fd_sc_hs__nor4bb_2") -sky130_fd_sc_hs__nor4bb_4 = partial(import_spice, "sky130_fd_sc_hs__nor4bb_4") -sky130_fd_sc_hs__o2111a_1 = partial(import_spice, "sky130_fd_sc_hs__o2111a_1") -sky130_fd_sc_hs__o2111a_2 = partial(import_spice, "sky130_fd_sc_hs__o2111a_2") -sky130_fd_sc_hs__o2111a_4 = partial(import_spice, "sky130_fd_sc_hs__o2111a_4") -sky130_fd_sc_hs__o2111ai_1 = partial(import_spice, "sky130_fd_sc_hs__o2111ai_1") -sky130_fd_sc_hs__o2111ai_2 = partial(import_spice, "sky130_fd_sc_hs__o2111ai_2") -sky130_fd_sc_hs__o2111ai_4 = partial(import_spice, "sky130_fd_sc_hs__o2111ai_4") -sky130_fd_sc_hs__o211a_1 = partial(import_spice, "sky130_fd_sc_hs__o211a_1") -sky130_fd_sc_hs__o211a_2 = partial(import_spice, "sky130_fd_sc_hs__o211a_2") -sky130_fd_sc_hs__o211a_4 = partial(import_spice, "sky130_fd_sc_hs__o211a_4") -sky130_fd_sc_hs__o211ai_1 = partial(import_spice, "sky130_fd_sc_hs__o211ai_1") -sky130_fd_sc_hs__o211ai_2 = partial(import_spice, "sky130_fd_sc_hs__o211ai_2") -sky130_fd_sc_hs__o211ai_4 = partial(import_spice, "sky130_fd_sc_hs__o211ai_4") -sky130_fd_sc_hs__o21a_1 = partial(import_spice, "sky130_fd_sc_hs__o21a_1") -sky130_fd_sc_hs__o21a_2 = partial(import_spice, "sky130_fd_sc_hs__o21a_2") -sky130_fd_sc_hs__o21a_4 = partial(import_spice, "sky130_fd_sc_hs__o21a_4") -sky130_fd_sc_hs__o21ai_1 = partial(import_spice, "sky130_fd_sc_hs__o21ai_1") -sky130_fd_sc_hs__o21ai_2 = partial(import_spice, "sky130_fd_sc_hs__o21ai_2") -sky130_fd_sc_hs__o21ai_4 = partial(import_spice, "sky130_fd_sc_hs__o21ai_4") -sky130_fd_sc_hs__o21ba_1 = partial(import_spice, "sky130_fd_sc_hs__o21ba_1") -sky130_fd_sc_hs__o21ba_2 = partial(import_spice, "sky130_fd_sc_hs__o21ba_2") -sky130_fd_sc_hs__o21ba_4 = partial(import_spice, "sky130_fd_sc_hs__o21ba_4") -sky130_fd_sc_hs__o21bai_1 = partial(import_spice, "sky130_fd_sc_hs__o21bai_1") -sky130_fd_sc_hs__o21bai_2 = partial(import_spice, "sky130_fd_sc_hs__o21bai_2") -sky130_fd_sc_hs__o21bai_4 = partial(import_spice, "sky130_fd_sc_hs__o21bai_4") -sky130_fd_sc_hs__o221a_1 = partial(import_spice, "sky130_fd_sc_hs__o221a_1") -sky130_fd_sc_hs__o221a_2 = partial(import_spice, "sky130_fd_sc_hs__o221a_2") -sky130_fd_sc_hs__o221a_4 = partial(import_spice, "sky130_fd_sc_hs__o221a_4") -sky130_fd_sc_hs__o221ai_1 = partial(import_spice, "sky130_fd_sc_hs__o221ai_1") -sky130_fd_sc_hs__o221ai_2 = partial(import_spice, "sky130_fd_sc_hs__o221ai_2") -sky130_fd_sc_hs__o221ai_4 = partial(import_spice, "sky130_fd_sc_hs__o221ai_4") -sky130_fd_sc_hs__o22a_1 = partial(import_spice, "sky130_fd_sc_hs__o22a_1") -sky130_fd_sc_hs__o22a_2 = partial(import_spice, "sky130_fd_sc_hs__o22a_2") -sky130_fd_sc_hs__o22a_4 = partial(import_spice, "sky130_fd_sc_hs__o22a_4") -sky130_fd_sc_hs__o22ai_1 = partial(import_spice, "sky130_fd_sc_hs__o22ai_1") -sky130_fd_sc_hs__o22ai_2 = partial(import_spice, "sky130_fd_sc_hs__o22ai_2") -sky130_fd_sc_hs__o22ai_4 = partial(import_spice, "sky130_fd_sc_hs__o22ai_4") -sky130_fd_sc_hs__o2bb2a_1 = partial(import_spice, "sky130_fd_sc_hs__o2bb2a_1") -sky130_fd_sc_hs__o2bb2a_2 = partial(import_spice, "sky130_fd_sc_hs__o2bb2a_2") -sky130_fd_sc_hs__o2bb2a_4 = partial(import_spice, "sky130_fd_sc_hs__o2bb2a_4") -sky130_fd_sc_hs__o2bb2ai_1 = partial(import_spice, "sky130_fd_sc_hs__o2bb2ai_1") -sky130_fd_sc_hs__o2bb2ai_2 = partial(import_spice, "sky130_fd_sc_hs__o2bb2ai_2") -sky130_fd_sc_hs__o2bb2ai_4 = partial(import_spice, "sky130_fd_sc_hs__o2bb2ai_4") -sky130_fd_sc_hs__o311a_1 = partial(import_spice, "sky130_fd_sc_hs__o311a_1") -sky130_fd_sc_hs__o311a_2 = partial(import_spice, "sky130_fd_sc_hs__o311a_2") -sky130_fd_sc_hs__o311a_4 = partial(import_spice, "sky130_fd_sc_hs__o311a_4") -sky130_fd_sc_hs__o311ai_1 = partial(import_spice, "sky130_fd_sc_hs__o311ai_1") -sky130_fd_sc_hs__o311ai_2 = partial(import_spice, "sky130_fd_sc_hs__o311ai_2") -sky130_fd_sc_hs__o311ai_4 = partial(import_spice, "sky130_fd_sc_hs__o311ai_4") -sky130_fd_sc_hs__o31a_1 = partial(import_spice, "sky130_fd_sc_hs__o31a_1") -sky130_fd_sc_hs__o31a_2 = partial(import_spice, "sky130_fd_sc_hs__o31a_2") -sky130_fd_sc_hs__o31a_4 = partial(import_spice, "sky130_fd_sc_hs__o31a_4") -sky130_fd_sc_hs__o31ai_1 = partial(import_spice, "sky130_fd_sc_hs__o31ai_1") -sky130_fd_sc_hs__o31ai_2 = partial(import_spice, "sky130_fd_sc_hs__o31ai_2") -sky130_fd_sc_hs__o31ai_4 = partial(import_spice, "sky130_fd_sc_hs__o31ai_4") -sky130_fd_sc_hs__o32a_1 = partial(import_spice, "sky130_fd_sc_hs__o32a_1") -sky130_fd_sc_hs__o32a_2 = partial(import_spice, "sky130_fd_sc_hs__o32a_2") -sky130_fd_sc_hs__o32a_4 = partial(import_spice, "sky130_fd_sc_hs__o32a_4") -sky130_fd_sc_hs__o32ai_1 = partial(import_spice, "sky130_fd_sc_hs__o32ai_1") -sky130_fd_sc_hs__o32ai_2 = partial(import_spice, "sky130_fd_sc_hs__o32ai_2") -sky130_fd_sc_hs__o32ai_4 = partial(import_spice, "sky130_fd_sc_hs__o32ai_4") -sky130_fd_sc_hs__o41a_1 = partial(import_spice, "sky130_fd_sc_hs__o41a_1") -sky130_fd_sc_hs__o41a_2 = partial(import_spice, "sky130_fd_sc_hs__o41a_2") -sky130_fd_sc_hs__o41a_4 = partial(import_spice, "sky130_fd_sc_hs__o41a_4") -sky130_fd_sc_hs__o41ai_1 = partial(import_spice, "sky130_fd_sc_hs__o41ai_1") -sky130_fd_sc_hs__o41ai_2 = partial(import_spice, "sky130_fd_sc_hs__o41ai_2") -sky130_fd_sc_hs__o41ai_4 = partial(import_spice, "sky130_fd_sc_hs__o41ai_4") -sky130_fd_sc_hs__or2_1 = partial(import_spice, "sky130_fd_sc_hs__or2_1") -sky130_fd_sc_hs__or2_2 = partial(import_spice, "sky130_fd_sc_hs__or2_2") -sky130_fd_sc_hs__or2_4 = partial(import_spice, "sky130_fd_sc_hs__or2_4") -sky130_fd_sc_hs__or2b_1 = partial(import_spice, "sky130_fd_sc_hs__or2b_1") -sky130_fd_sc_hs__or2b_2 = partial(import_spice, "sky130_fd_sc_hs__or2b_2") -sky130_fd_sc_hs__or2b_4 = partial(import_spice, "sky130_fd_sc_hs__or2b_4") -sky130_fd_sc_hs__or3_1 = partial(import_spice, "sky130_fd_sc_hs__or3_1") -sky130_fd_sc_hs__or3_2 = partial(import_spice, "sky130_fd_sc_hs__or3_2") -sky130_fd_sc_hs__or3_4 = partial(import_spice, "sky130_fd_sc_hs__or3_4") -sky130_fd_sc_hs__or3b_1 = partial(import_spice, "sky130_fd_sc_hs__or3b_1") -sky130_fd_sc_hs__or3b_2 = partial(import_spice, "sky130_fd_sc_hs__or3b_2") -sky130_fd_sc_hs__or3b_4 = partial(import_spice, "sky130_fd_sc_hs__or3b_4") -sky130_fd_sc_hs__or4_1 = partial(import_spice, "sky130_fd_sc_hs__or4_1") -sky130_fd_sc_hs__or4_2 = partial(import_spice, "sky130_fd_sc_hs__or4_2") -sky130_fd_sc_hs__or4_4 = partial(import_spice, "sky130_fd_sc_hs__or4_4") -sky130_fd_sc_hs__or4b_1 = partial(import_spice, "sky130_fd_sc_hs__or4b_1") -sky130_fd_sc_hs__or4b_2 = partial(import_spice, "sky130_fd_sc_hs__or4b_2") -sky130_fd_sc_hs__or4b_4 = partial(import_spice, "sky130_fd_sc_hs__or4b_4") -sky130_fd_sc_hs__or4bb_1 = partial(import_spice, "sky130_fd_sc_hs__or4bb_1") -sky130_fd_sc_hs__or4bb_2 = partial(import_spice, "sky130_fd_sc_hs__or4bb_2") -sky130_fd_sc_hs__or4bb_4 = partial(import_spice, "sky130_fd_sc_hs__or4bb_4") -sky130_fd_sc_hs__sdfbbn_1 = partial(import_spice, "sky130_fd_sc_hs__sdfbbn_1") -sky130_fd_sc_hs__sdfbbn_2 = partial(import_spice, "sky130_fd_sc_hs__sdfbbn_2") -sky130_fd_sc_hs__sdfbbp_1 = partial(import_spice, "sky130_fd_sc_hs__sdfbbp_1") -sky130_fd_sc_hs__sdfrbp_1 = partial(import_spice, "sky130_fd_sc_hs__sdfrbp_1") -sky130_fd_sc_hs__sdfrbp_2 = partial(import_spice, "sky130_fd_sc_hs__sdfrbp_2") -sky130_fd_sc_hs__sdfrtn_1 = partial(import_spice, "sky130_fd_sc_hs__sdfrtn_1") -sky130_fd_sc_hs__sdfrtp_1 = partial(import_spice, "sky130_fd_sc_hs__sdfrtp_1") -sky130_fd_sc_hs__sdfrtp_2 = partial(import_spice, "sky130_fd_sc_hs__sdfrtp_2") -sky130_fd_sc_hs__sdfrtp_4 = partial(import_spice, "sky130_fd_sc_hs__sdfrtp_4") -sky130_fd_sc_hs__sdfsbp_1 = partial(import_spice, "sky130_fd_sc_hs__sdfsbp_1") -sky130_fd_sc_hs__sdfsbp_2 = partial(import_spice, "sky130_fd_sc_hs__sdfsbp_2") -sky130_fd_sc_hs__sdfstp_1 = partial(import_spice, "sky130_fd_sc_hs__sdfstp_1") -sky130_fd_sc_hs__sdfstp_2 = partial(import_spice, "sky130_fd_sc_hs__sdfstp_2") -sky130_fd_sc_hs__sdfstp_4 = partial(import_spice, "sky130_fd_sc_hs__sdfstp_4") -sky130_fd_sc_hs__sdfxbp_1 = partial(import_spice, "sky130_fd_sc_hs__sdfxbp_1") -sky130_fd_sc_hs__sdfxbp_2 = partial(import_spice, "sky130_fd_sc_hs__sdfxbp_2") -sky130_fd_sc_hs__sdfxtp_1 = partial(import_spice, "sky130_fd_sc_hs__sdfxtp_1") -sky130_fd_sc_hs__sdfxtp_2 = partial(import_spice, "sky130_fd_sc_hs__sdfxtp_2") -sky130_fd_sc_hs__sdfxtp_4 = partial(import_spice, "sky130_fd_sc_hs__sdfxtp_4") -sky130_fd_sc_hs__sdlclkp_1 = partial(import_spice, "sky130_fd_sc_hs__sdlclkp_1") -sky130_fd_sc_hs__sdlclkp_2 = partial(import_spice, "sky130_fd_sc_hs__sdlclkp_2") -sky130_fd_sc_hs__sdlclkp_4 = partial(import_spice, "sky130_fd_sc_hs__sdlclkp_4") -sky130_fd_sc_hs__sedfxbp_1 = partial(import_spice, "sky130_fd_sc_hs__sedfxbp_1") -sky130_fd_sc_hs__sedfxbp_2 = partial(import_spice, "sky130_fd_sc_hs__sedfxbp_2") -sky130_fd_sc_hs__sedfxtp_1 = partial(import_spice, "sky130_fd_sc_hs__sedfxtp_1") -sky130_fd_sc_hs__sedfxtp_2 = partial(import_spice, "sky130_fd_sc_hs__sedfxtp_2") -sky130_fd_sc_hs__sedfxtp_4 = partial(import_spice, "sky130_fd_sc_hs__sedfxtp_4") -sky130_fd_sc_hs__tap_1 = partial(import_spice, "sky130_fd_sc_hs__tap_1") -sky130_fd_sc_hs__tap_2 = partial(import_spice, "sky130_fd_sc_hs__tap_2") -sky130_fd_sc_hs__tapmet1_2 = partial(import_spice, "sky130_fd_sc_hs__tapmet1_2") -sky130_fd_sc_hs__tapvgnd2_1 = partial(import_spice, "sky130_fd_sc_hs__tapvgnd2_1") -sky130_fd_sc_hs__tapvgnd_1 = partial(import_spice, "sky130_fd_sc_hs__tapvgnd_1") -sky130_fd_sc_hs__tapvpwrvgnd_1 = partial(import_spice, "sky130_fd_sc_hs__tapvpwrvgnd_1") -sky130_fd_sc_hs__xnor2_1 = partial(import_spice, "sky130_fd_sc_hs__xnor2_1") -sky130_fd_sc_hs__xnor2_2 = partial(import_spice, "sky130_fd_sc_hs__xnor2_2") -sky130_fd_sc_hs__xnor2_4 = partial(import_spice, "sky130_fd_sc_hs__xnor2_4") -sky130_fd_sc_hs__xnor3_1 = partial(import_spice, "sky130_fd_sc_hs__xnor3_1") -sky130_fd_sc_hs__xnor3_2 = partial(import_spice, "sky130_fd_sc_hs__xnor3_2") -sky130_fd_sc_hs__xnor3_4 = partial(import_spice, "sky130_fd_sc_hs__xnor3_4") -sky130_fd_sc_hs__xor2_1 = partial(import_spice, "sky130_fd_sc_hs__xor2_1") -sky130_fd_sc_hs__xor2_2 = partial(import_spice, "sky130_fd_sc_hs__xor2_2") -sky130_fd_sc_hs__xor2_4 = partial(import_spice, "sky130_fd_sc_hs__xor2_4") -sky130_fd_sc_hs__xor3_1 = partial(import_spice, "sky130_fd_sc_hs__xor3_1") -sky130_fd_sc_hs__xor3_2 = partial(import_spice, "sky130_fd_sc_hs__xor3_2") -sky130_fd_sc_hs__xor3_4 = partial(import_spice, "sky130_fd_sc_hs__xor3_4") -sky130_fd_sc_hvl__a21o_1 = partial(import_spice, "sky130_fd_sc_hvl__a21o_1") -sky130_fd_sc_hvl__a21oi_1 = partial(import_spice, "sky130_fd_sc_hvl__a21oi_1") -sky130_fd_sc_hvl__a22o_1 = partial(import_spice, "sky130_fd_sc_hvl__a22o_1") -sky130_fd_sc_hvl__a22oi_1 = partial(import_spice, "sky130_fd_sc_hvl__a22oi_1") -sky130_fd_sc_hvl__and2_1 = partial(import_spice, "sky130_fd_sc_hvl__and2_1") -sky130_fd_sc_hvl__and3_1 = partial(import_spice, "sky130_fd_sc_hvl__and3_1") -sky130_fd_sc_hvl__buf_1 = partial(import_spice, "sky130_fd_sc_hvl__buf_1") -sky130_fd_sc_hvl__buf_16 = partial(import_spice, "sky130_fd_sc_hvl__buf_16") -sky130_fd_sc_hvl__buf_2 = partial(import_spice, "sky130_fd_sc_hvl__buf_2") -sky130_fd_sc_hvl__buf_32 = partial(import_spice, "sky130_fd_sc_hvl__buf_32") -sky130_fd_sc_hvl__buf_4 = partial(import_spice, "sky130_fd_sc_hvl__buf_4") -sky130_fd_sc_hvl__buf_8 = partial(import_spice, "sky130_fd_sc_hvl__buf_8") -sky130_fd_sc_hvl__conb_1 = partial(import_spice, "sky130_fd_sc_hvl__conb_1") -sky130_fd_sc_hvl__decap_4 = partial(import_spice, "sky130_fd_sc_hvl__decap_4") -sky130_fd_sc_hvl__decap_8 = partial(import_spice, "sky130_fd_sc_hvl__decap_8") -sky130_fd_sc_hvl__dfrbp_1 = partial(import_spice, "sky130_fd_sc_hvl__dfrbp_1") -sky130_fd_sc_hvl__dfrtp_1 = partial(import_spice, "sky130_fd_sc_hvl__dfrtp_1") -sky130_fd_sc_hvl__dfsbp_1 = partial(import_spice, "sky130_fd_sc_hvl__dfsbp_1") -sky130_fd_sc_hvl__dfstp_1 = partial(import_spice, "sky130_fd_sc_hvl__dfstp_1") -sky130_fd_sc_hvl__dfxbp_1 = partial(import_spice, "sky130_fd_sc_hvl__dfxbp_1") -sky130_fd_sc_hvl__dfxtp_1 = partial(import_spice, "sky130_fd_sc_hvl__dfxtp_1") -sky130_fd_sc_hvl__diode_2 = partial(import_spice, "sky130_fd_sc_hvl__diode_2") -sky130_fd_sc_hvl__dlclkp_1 = partial(import_spice, "sky130_fd_sc_hvl__dlclkp_1") -sky130_fd_sc_hvl__dlrtp_1 = partial(import_spice, "sky130_fd_sc_hvl__dlrtp_1") -sky130_fd_sc_hvl__dlxtp_1 = partial(import_spice, "sky130_fd_sc_hvl__dlxtp_1") -sky130_fd_sc_hvl__einvn_1 = partial(import_spice, "sky130_fd_sc_hvl__einvn_1") -sky130_fd_sc_hvl__einvp_1 = partial(import_spice, "sky130_fd_sc_hvl__einvp_1") -sky130_fd_sc_hvl__fill_1 = partial(import_spice, "sky130_fd_sc_hvl__fill_1") -sky130_fd_sc_hvl__fill_2 = partial(import_spice, "sky130_fd_sc_hvl__fill_2") -sky130_fd_sc_hvl__fill_4 = partial(import_spice, "sky130_fd_sc_hvl__fill_4") -sky130_fd_sc_hvl__fill_8 = partial(import_spice, "sky130_fd_sc_hvl__fill_8") -sky130_fd_sc_hvl__inv_1 = partial(import_spice, "sky130_fd_sc_hvl__inv_1") -sky130_fd_sc_hvl__inv_16 = partial(import_spice, "sky130_fd_sc_hvl__inv_16") -sky130_fd_sc_hvl__inv_2 = partial(import_spice, "sky130_fd_sc_hvl__inv_2") -sky130_fd_sc_hvl__inv_4 = partial(import_spice, "sky130_fd_sc_hvl__inv_4") -sky130_fd_sc_hvl__inv_8 = partial(import_spice, "sky130_fd_sc_hvl__inv_8") -sky130_fd_sc_hvl__lsbufhv2hv_hl_1 = partial( - import_spice, "sky130_fd_sc_hvl__lsbufhv2hv_hl_1" -) -sky130_fd_sc_hvl__lsbufhv2hv_lh_1 = partial( - import_spice, "sky130_fd_sc_hvl__lsbufhv2hv_lh_1" -) -sky130_fd_sc_hvl__lsbufhv2lv_1 = partial(import_spice, "sky130_fd_sc_hvl__lsbufhv2lv_1") -sky130_fd_sc_hvl__lsbufhv2lv_simple_1 = partial( - import_spice, "sky130_fd_sc_hvl__lsbufhv2lv_simple_1" -) -sky130_fd_sc_hvl__lsbuflv2hv_1 = partial(import_spice, "sky130_fd_sc_hvl__lsbuflv2hv_1") -sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3 = partial( - import_spice, "sky130_fd_sc_hvl__lsbuflv2hv_clkiso_hlkg_3" -) -sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1 = partial( - import_spice, "sky130_fd_sc_hvl__lsbuflv2hv_isosrchvaon_1" -) -sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1 = partial( - import_spice, "sky130_fd_sc_hvl__lsbuflv2hv_symmetric_1" -) -sky130_fd_sc_hvl__mux2_1 = partial(import_spice, "sky130_fd_sc_hvl__mux2_1") -sky130_fd_sc_hvl__mux4_1 = partial(import_spice, "sky130_fd_sc_hvl__mux4_1") -sky130_fd_sc_hvl__nand2_1 = partial(import_spice, "sky130_fd_sc_hvl__nand2_1") -sky130_fd_sc_hvl__nand3_1 = partial(import_spice, "sky130_fd_sc_hvl__nand3_1") -sky130_fd_sc_hvl__nor2_1 = partial(import_spice, "sky130_fd_sc_hvl__nor2_1") -sky130_fd_sc_hvl__nor3_1 = partial(import_spice, "sky130_fd_sc_hvl__nor3_1") -sky130_fd_sc_hvl__o21a_1 = partial(import_spice, "sky130_fd_sc_hvl__o21a_1") -sky130_fd_sc_hvl__o21ai_1 = partial(import_spice, "sky130_fd_sc_hvl__o21ai_1") -sky130_fd_sc_hvl__o22a_1 = partial(import_spice, "sky130_fd_sc_hvl__o22a_1") -sky130_fd_sc_hvl__o22ai_1 = partial(import_spice, "sky130_fd_sc_hvl__o22ai_1") -sky130_fd_sc_hvl__or2_1 = partial(import_spice, "sky130_fd_sc_hvl__or2_1") -sky130_fd_sc_hvl__or3_1 = partial(import_spice, "sky130_fd_sc_hvl__or3_1") -sky130_fd_sc_hvl__probe_p_8 = partial(import_spice, "sky130_fd_sc_hvl__probe_p_8") -sky130_fd_sc_hvl__probec_p_8 = partial(import_spice, "sky130_fd_sc_hvl__probec_p_8") -sky130_fd_sc_hvl__schmittbuf_1 = partial(import_spice, "sky130_fd_sc_hvl__schmittbuf_1") -sky130_fd_sc_hvl__sdfrbp_1 = partial(import_spice, "sky130_fd_sc_hvl__sdfrbp_1") -sky130_fd_sc_hvl__sdfrtp_1 = partial(import_spice, "sky130_fd_sc_hvl__sdfrtp_1") -sky130_fd_sc_hvl__sdfsbp_1 = partial(import_spice, "sky130_fd_sc_hvl__sdfsbp_1") -sky130_fd_sc_hvl__sdfstp_1 = partial(import_spice, "sky130_fd_sc_hvl__sdfstp_1") -sky130_fd_sc_hvl__sdfxbp_1 = partial(import_spice, "sky130_fd_sc_hvl__sdfxbp_1") -sky130_fd_sc_hvl__sdfxtp_1 = partial(import_spice, "sky130_fd_sc_hvl__sdfxtp_1") -sky130_fd_sc_hvl__sdlclkp_1 = partial(import_spice, "sky130_fd_sc_hvl__sdlclkp_1") -sky130_fd_sc_hvl__sdlxtp_1 = partial(import_spice, "sky130_fd_sc_hvl__sdlxtp_1") -sky130_fd_sc_hvl__xnor2_1 = partial(import_spice, "sky130_fd_sc_hvl__xnor2_1") -sky130_fd_sc_hvl__xor2_1 = partial(import_spice, "sky130_fd_sc_hvl__xor2_1") - - -if __name__ == "__main__": - # circuit = sky130_fd_sc_hd__a2111o_1() - - circuit = Circuit("mosfet0") - circuit.lib(PATH.libs_ngspice / "sky130.lib.spice", "tt") - circuit.include(PATH.spice / "sky130_fd_sc_hd.spice") - # circuit.X("sky130_fd_sc_hd__a2111o_1", "sky130_fd_sc_hd__a2111o_1 ", "DRAIN", "GATE", "VGND") - circuit.X("DRAIN", "GATE", 1, circuit.gnd) - circuit.V("gnd", "VGND", 0, 0) - circuit.V("dd", "VPWR", "VGND", 1.8) - circuit.R("", "VPWR", "DRAIN", "10k") - circuit.PulseVoltageSource( - "Vin", - "GATE", - "VGND", - initial_value=0 @ u_V, - pulsed_value=1.8 @ u_V, - rise_time=10 @ u_ps, - fall_time=10 @ u_ps, - pulse_width=1 @ u_ns, - period=2 @ u_ns, - delay_time=1 @ u_ns, - ) - print(str(circuit)) - simulator = circuit.simulator() - analysis = simulator.transient(step_time=10 @ u_ps, end_time=2 @ u_ns) - print("done") - fig, ax = plt.subplots(figsize=(20, 10)) - ax.set_title("mosfet") - ax.set_xlabel("time in 1e-14s") - ax.set_ylabel("voltage in V") - ax.plot(analysis.GATE) - ax.plot(analysis.DRAIN) - ax.legend(("GATE", "DRAIN")) - plt.tight_layout() - plt.show(show_ports=True) From 062984b6381d0f70f9338f0aa4dc99c2c93c2bf7 Mon Sep 17 00:00:00 2001 From: Joaquin Matres <4514346+joamatab@users.noreply.github.com> Date: Wed, 29 May 2024 11:53:45 -0700 Subject: [PATCH 3/3] strip notebook output --- docs/notebooks/simulation_basics.ipynb | 18 +++++------------- sky130/hdl21.py | 1 + 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/docs/notebooks/simulation_basics.ipynb b/docs/notebooks/simulation_basics.ipynb index c3073de83..bbde14b07 100644 --- a/docs/notebooks/simulation_basics.ipynb +++ b/docs/notebooks/simulation_basics.ipynb @@ -2,18 +2,10 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, - "id": "8163b0cd-276a-4530-99dd-97bc20906b78", + "execution_count": null, + "id": "0", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\u001b[32m2024-05-23 17:10:58.325\u001b[0m | \u001b[1mINFO \u001b[0m | \u001b[36mgdsfactory.pdk\u001b[0m:\u001b[36mregister_cells_yaml\u001b[0m:\u001b[36m376\u001b[0m - \u001b[1mRegistered cell 'sample'\u001b[0m\n" - ] - } - ], + "outputs": [], "source": [ "import sky130\n", "import sky130_hdl21" @@ -22,7 +14,7 @@ { "cell_type": "code", "execution_count": null, - "id": "c3e4d92b-c3d3-4677-8416-9c23de62b6c9", + "id": "1", "metadata": {}, "outputs": [], "source": [] @@ -30,7 +22,7 @@ { "cell_type": "code", "execution_count": null, - "id": "978298fe-2c3e-492a-b037-28a7ffcbe337", + "id": "2", "metadata": {}, "outputs": [], "source": [] diff --git a/sky130/hdl21.py b/sky130/hdl21.py index fa6a0f4da..ac86e500e 100644 --- a/sky130/hdl21.py +++ b/sky130/hdl21.py @@ -1,6 +1,7 @@ """ Configuration for the hdl21 PDK linking with our source files. """ + import pathlib import sky130_hdl21